In Python 3+ möchte ich Werte aus einem Wörterbuch (oder Pandas Dataframe) in eine Datenbank einfügen. Ich habe mich für psycopg2 mit einer Postgres-Datenbank entschieden.Psycopg2 Python-Wörterbuch in Postgres-Datenbank einfügen
Die Probleme sind, dass ich den richtigen Weg nicht herausfinden kann, dies zu tun. Ich kann leicht eine SQL-Zeichenfolge verketten, die ausgeführt wird, aber die psycopg2-Dokumentation warnt ausdrücklich davor. Im Idealfall wollte ich so etwas wie dies tun:
cur.execute("INSERT INTO table VALUES (%s);", dict_data)
und zu hoffen, dass die herausführen könnte, dass die Schlüssel der dict die Spalten in der Tabelle übereinstimmt. Das hat nicht funktioniert. Aus den Beispielen der psycopg2 Dokumentation habe ich diesen Ansatz
cur.execute("INSERT INTO table (" + ", ".join(dict_data.keys()) + ") VALUES (" + ", ".join(["%s" for pair in dict_data]) + ");", dict_data)
von dem ich ein
TypeError: 'dict' object does not support indexing
bekommen Was ist die PhytoNic Art und Weise ein Wörterbuch in eine Tabelle einzufügen mit Spaltennamen passend?
Vor/Nachteile dieses im Vergleich zu dem vorgeschlagenen SQL? Die zweite Lösung ist im Grunde die gleiche wie die vorgeschlagene Lösung (außer String Format vs Compoundierung)? Afaik cur.execute calls cur.mogrify bei Bedarf? – Paamand