Leider MS Access (speziell dessen Laufwerk-Jet/ACE Motor nicht Das Programm GUI.exe) wird nicht mit SQLAlchemy unterstützt, um die pandas.to_sql()
Methode zu ermöglichen, die Sie idealerweise Ihren Datenrahmen in eine temporäre Tabelle in der Datenbank schieben können, um eine UPDATE final INNER JOIN temp ...
Abfrage zu führen, um finale Tabelle zu aktualisieren, ein viel schnellerer Router e als Iteration über Zeilen.
Zum Glück, MS Access' Jet/ACE Engine kann CSV-Dateien abfragen, als ob sie Tische, wo Sie den Dateipfad angeben und dann von CSV-Datei benennen. Erwägen Sie daher, den Datenrahmen to_csv zu exportieren, erstellen Sie dann eine temporäre Tabelle mit der Abfrage Make-Table, und führen Sie schließlich die Update-Join-Abfrage aus. Unter try/except
wird verwendet, um die Tabelle zu löschen, wenn sie existiert (seit IF EXISTS
Befehl ist in MS Access SQL nicht verfügbar).
df.to_csv('C:\Path\To\CSV\Output.csv', index=False)
try:
cursor.execute("SELECT * INTO tblhis_ventas_Temp" +\
" FROM [text;HDR=Yes;FMT=Delimited(,);Database=C:\Path\To\CSV].Output.csv")
conn.commit()
cursor.execute("UPDATE tblhis_ventas f INNER JOIN tblhis_ventas_Temp t" + \
" ON f.contrato = t.contrato AND f.estado = t.estado" + \
" SET f. portabilidad = t.portabilidad")
conn.commit()
except Exception as e:
if 'already exists' in str(e):
cursor.execute("DROP TABLE tblhis_ventas_Temp")
conn.commit()
else:
print(e)
cursor.close()
conn.close()
Und nein, wir können nicht direkt CSV-Datei in UPDATE
Abfrage verwenden (temporäre Tabelle Prozess unter Umgehung) als csv ist eine schreibgeschützte und nicht aktualisierbar-Cord. Interessanterweise können Sie CSV in einem INSERT...SELECT
verwenden.
es funktioniert !. Es ist sehr schnell. Ich kannte die temporären CSV-Dateien nicht in MS-Zugriff. Ich bin Ihnen allen sehr dankbar. – calobeto