Ich habe nach der Verarbeitung einer XML-Datei ein sehr großes Wörterbuch erstellt, und ich suche aus diesem Wörterbuch extrahieren und Spalten und Werte in meine MySQL-Datenbanktabelle einfügen.Python verschachteltes Wörterbuch mit SQL-Einfügung
Ich bin mit Python 3.
Das Wörterbuch ist verschachtelten; hier ist ein einfaches Beispiel von dem, was ich habe:
d ={'Test1'{'TestID':'first','Dev_Type':'this device','Version':'v1_0','Address':'some Address'}
'Test2'{'TestID':'second','Dev_Type':'that device','Version':'v1_0','Address':'other Address'}
'Test3'{'TestID','third','Dev_Type':'other device','Version':'v1_0','Address':'another Address'}
}
Grund mag ich über jeden Primärschlüssel in diesem Wörterbuch (zB Test1, Test2, Test3) und extrahieren Sie den Sekundärschlüssel als Spaltennamen Tupel und den damit verbundenen seconday iterieren Schlüsselwerte als Werte Tupel, ein bisschen wie folgt aus:
cols = ('TestID','Dev_Type','Version','Address')
vals = ('first','this device','v1_0','some Address')
auf über jeden Primärschlüssel Iterieren ich die beiden Tupeln meine mySQL Tabelle mit diesem Befehl fügt:
sql = "INSERT INTO Parameters ({0}) VALUES ({1})".format(', '.join(cols), ', '.join(['%s'] * len(cols)));
try:
cursor.execute(sql, vals)
except Exception as e:
print(e)
pass
Dann wiederholen Sie den Vorgang beim nächsten Primärschlüssel ('Test2').
Ich habe einen ersten Versuch gemacht, haben aber schwer, den Primärschlüssel in diesem Fall codiert:
for k, v in d:
#Missing appropriate method here
cols = tuple(d['Test1'].keys())
vals = tuple(d['Test1'].values())
sql = "INSERT INTO Parameters ({0}) VALUES ({1})".format(', '.join(cols), ', '.join(['%s'] * len(cols)));
try:
cursor.execute(sql, vals)
except Exception as e:
pass
connection.close()
return
Dies ist tangential, aber Sie sollten die Parametersubstitution der Datenbank-API verwenden, um gegen SQL-Injektionen zu schützen: https://docs.python.org/2/library/sqlite3.html#sqlite3.Cursor.execute –
Meinten Sie zu Lassen Sie das ':' zwischen den Schlüsseln und Werten in Ihrem Beispiel dict aus? –