Ich versuche, Daten aus einem Wörterbuch in eine Datenbank einzufügen. Ich möchte die Werte durchlaufen und sie je nach Datentyp entsprechend formatieren. Hier ist ein Ausschnitt des Codes, den ich verwende:
def _db_inserts(dbinfo):
try:
rows = dbinfo['datarows']
for row in rows:
field_names = ",".join(["'{0}'".format(x) for x in row.keys()])
value_list = row.values()
for pos, value in enumerate(value_list):
if isinstance(value, str):
value_list[pos] = "'{0}'".format(value)
elif isinstance(value, datetime):
value_list[pos] = "'{0}'".format(value.strftime('%Y-%m-%d'))
values = ",".join(value_list)
sql = "INSERT INTO table_foobar ({0}) VALUES ({1})".format(field_names, values)
except Exception as e:
print 'BARFED with msg:',e
Wenn ich das Algo mit einigen Beispieldaten ausführe (siehe unten), wird folgende Fehlermeldung angezeigt:
TypeError: Sequenzelement 0: erwartete Zeichenfolge, int gefunden
Ein Beispiel für Wertelistendaten, die den obigen Fehler ergeben, ist:
value_list = [377, -99999, -99999, 'f', -99999, -99999, -99999, 1108.0999999999999, 0, 'f', -99999, 0, 'f', -99999, 'f', -99999, 1108.0999999999999, -99999, 'f', -99999, 'f', -99999, 'f', 'f', 0, 1108.0999999999999, -99999, -99999, 'f', 'f', 'f', -99999, 'f', '1984-04-02', -99999, 'f', -99999, 'f', 1108.0999999999999]
Was mache ich falsch?
values = ",".join(map(str, value_list))