Ich versuche, psycopg2 zu verwenden, um eine Zeile in eine Tabelle aus einer Python-Liste einzufügen, aber Probleme mit der Formatierung von Zeichenfolgen.psycopg2 nicht alle Argumente während der Formatierung von Zeichenfolgen konvertiert
Die Tabelle hat 4 Spalten von Typen (1043-varchar, 1114-timestamp, 1043-varchar, 23-int4). Ich habe auch Versuche mit 1082-Datum anstelle von Zeitstempel und 21-Int2 statt Int4 gemacht.
Die folgende Anweisung funktioniert in pgAdmin oder durch einen psycopg2 Cursor Ausführung ohne String-Formatierung:
INSERT INTO ssurgo.distmd VALUES ('5', '2015-01-01', 'Successful', 4891);
Allerdings, wenn ich tun:
sql_text = "INSERT INTO ssurgo.distmd VALUES %s ;"
data = ['5', '2015-01-01', 'Successful', 4891]
data[1] = date.today() # ensure psycopg2 recognizes a date using datetime
print(curs.mogrify(sql_text, data))
ich:
TypeError: not all arguments converted during string formatting
Ich bekomme den gleichen Fehler, wenn ich das Datum als eine '2015-01-01' Zeichenfolge anstelle einer datetime.date Obje halten ct, und wenn ich curs.execute (sql_text, Daten) anstelle von mogrify verwenden.
Ich übergebe eine Liste, also glaube ich nicht, dass dies mit dem häufiger auftretenden Einzeltupelfehler zusammenhängt, den ich in anderen Fragen fand, der notwendig ist, um eine Nicht-String-Sequenz zu erzeugen und explizit in ein Tupel zu konvertieren behebe den Fehler.
Weiß jemand, warum die psycopg2-String-Formatierung einen Fehler gibt?
Sie haben nur einen Wertplatzhalter für vier Werte. – Keith