Ich versuche, Daten aus einem Wörterbuch in eine Datenbank mit benannten Parametern einzufügen. Ich arbeite mit einer einfachen SQL-Anweisung, z.Python Sqlite einfügen benannte Parameter oder Null
Fügt irgendwo in den Ort ein, 1000 in die Ankunftsspalte und 1001 in die Abfahrtsspalte.
Die Daten, die ich tatsächlich haben werde, enthalten Ort, aber kann entweder Ankunft oder Abreise enthalten, aber möglicherweise nicht beide (in diesem Fall entweder nichts oder NULL kann in die Tabelle gehen). In diesem Fall bekomme ich sqlite3.ProgrammingError: Sie haben keinen Wert liefern 2.
für die Bindung ich diese defaultdict unter Verwendung beheben können:
c.execute(SQL,defaultdict(str,dict))
Um die Dinge etwas komplizierter zu machen, werde ich tatsächlich haben eine Liste von Wörterbüchern, die mehrere Orte mit einer An- oder Abreise enthalten.
({'location': 'place1', 'departure': '1000'},
{'location': 'palce2', 'arrival': '1010'},
{'location': 'place2', 'departure': '1001'})
und ich möchte dies mit c.executemany laufen können, aber jetzt ich nicht defaultdict nutzen kann.
Ich könnte durch jedes Wörterbuch in der Liste durchlaufen und viele c.execute -Anweisungen ausführen, aber Executemany scheint ein aufgeräumter Weg, es zu tun.
Ich habe dieses Beispiel vereinfacht, die eigentlichen Daten haben viel mehr Einträge im Wörterbuch und ich baue es aus einer JSON-Textdatei.
Wer hat irgendwelche Vorschläge, wie ich das tun könnte?
Dank Martin - das funktioniert. Für alle anderen Benutzer mit diesem Problem muss das Standardwörterbuch einen Eintrag für jedes mögliche Element enthalten, auch wenn das Wörterbuch immer vorhanden ist. Außerdem fehlt eine abschließende Klammer in der Executemany-Zeile. – user2497185