[PYTHON] Aktualisieren Sie mehrere Tabellen gleichzeitig mit pandas to_sql

Methode

Transaktionen in Pandas können mit SQLAlchemys engine.begin () wie folgt implementiert werden:

Selbst wenn das Aktualisieren jeder Tabelle einige Zeit in Anspruch nimmt, kann das Update auf diese Weise ohne Zeitunterschied gleichzeitig wiedergegeben werden. Wenn dies fehlschlägt, können Sie ein Rollback durchführen. Bei Verwendung von with wird der Festschreibungsprozess automatisch aufgerufen. (Bei Fehler zurücksetzen)

from sqlalchemy import create_engine
engine = create_engine(url)

with engine.begin() as conn:
    df1.to_sql('table1', conn, if_exists='append')
    df2.to_sql('table2', conn, if_exists='append')

wichtiger Punkt

Wenn Sie eine Abfrage ausführen, die bewirkt, dass ein Commit innerhalb des with-Blocks ausgeführt wird, wird es dort festgeschrieben. Referenz: Anweisungen, die ein implizites Commit verursachen

Wenn beispielsweise die Option "if_exists" von "to_sql" auf "platz" gesetzt ist, wird DROP TABLE ausgeführt und für jede Tabelle wird eine Aktualisierung durchgeführt.

with engine.begin() as conn:
    df1.to_sql('table1', conn, if_exists='replace')
    df2.to_sql('table2', conn, if_exists='replace')  #DROP TABLE wird aufgerufen und die Aktualisierung von Tabelle1 wird festgeschrieben.

Wenn Sie den gesamten Inhalt der Tabelle aktualisieren möchten, ist es besser, eine Tabelle mit einem anderen Namen einmal zu erstellen und durch RENAME TABLE zu ersetzen.

from sqlalchemy import create_engine
engine = create_engine(url)

df1.to_sql('table1_new', engine, if_exists='replace')
df2.to_sql('table2_new', engine, if_exists='replace') 

engine.execute('''
RENAME TABLE table1 to table1_old, 
             table1_new to table1
             table2 to table2_old,
             table2_tmp to table2;
'''
)

Recommended Posts

Aktualisieren Sie mehrere Tabellen gleichzeitig mit pandas to_sql
Konvertieren Sie mehrere Protodateien gleichzeitig mit Python
Erstellen Sie mit Ansible Playbook mehrere Benutzer mit Seriennummern gleichzeitig
[Python] Verbinde zwei Tabellen mit Pandas
Extrahieren Sie bestimmte mehrere Spalten mit Pandas
Ersetzen Sie alles auf einmal durch sed
[Laravel] Ein Alias, der eine Migrationsdatei für mehrere Tabellen gleichzeitig erstellt.
Konvertieren Sie Memos sofort mit Python 2to3
Erstellen Sie mehrere Benutzer mit Seriennummern gleichzeitig in Ansible Playbook: Teil 2
Senden Sie Newsletter auf einmal mit Google Mail
Tipps zum Zeichnen mehrerer Linien mit Pandas
Verlassen Sie mehrere Schleifen gleichzeitig
Typkonvertierung mehrerer Spalten von Pandas DataFrame mit Astype gleichzeitig
Löschen Sie Bilddateien sofort mit einem Liner
Ein Befehl zum automatischen Aktualisieren der Pip-Bibliothek in einem Stapel
Registrieren Sie mehrere selbst erstellte Stile gleichzeitig in Word
Grenzwerte, die mit MeCab sofort analysiert werden können
Erwerben Sie mit Glob mehrere Excels gleichzeitig (Borace-Ergebnis für maschinelles Lernen, Bestätigung für Juni)