Mettre à jour plusieurs tables à la fois avec pandas to_sql

Méthode

Les transactions dans les pandas peuvent être implémentées en utilisant ʻengine.begin () `de SQLAlchemy comme suit:

En faisant cela, même si la mise à jour de chaque table prend du temps, la mise à jour peut être reflétée en même temps sans décalage horaire, et si elle échoue, vous pouvez revenir en arrière. En utilisant with, le processus de validation est automatiquement appelé. (Revenir en cas d'échec)

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')

point important

Si vous exécutez une requête qui entraîne l'exécution d'une validation dans le bloc with, elle y sera validée. Référence: Déclarations qui provoquent une validation implicite

Par exemple, si l'option ʻif_exists de to_sql` est définie sur 'replace', DROP TABLE sera exécuté et une mise à jour se produira pour chaque table.

with engine.begin() as conn:
    df1.to_sql('table1', conn, if_exists='replace')
    df2.to_sql('table2', conn, if_exists='replace')  #DROP TABLE est appelé et la mise à jour de table1 est validée.

Si vous souhaitez mettre à jour tout le contenu de la table, il semble préférable de créer une fois une table avec un autre nom et de la remplacer par RENAME TABLE.

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

Mettre à jour plusieurs tables à la fois avec pandas to_sql
Convertissez plusieurs fichiers proto à la fois avec python
Créez plusieurs utilisateurs avec des numéros de série à la fois avec Ansible Playbook
[Python] Joindre deux tables avec des pandas
Extraire plusieurs colonnes spécifiques avec des pandas
Remplacez tout d'un coup par sed
[Laravel] Un alias qui crée un fichier de migration pour plusieurs tables à la fois.
Convertir un mémo à la fois avec Python 2to3
Créez plusieurs utilisateurs avec des numéros de série à la fois dans Ansible Playbook: Partie 2
Envoyez des newsletters en une seule fois avec Gmail
Conseils pour tracer plusieurs lignes avec des pandas
Sortez de plusieurs boucles à la fois
Conversion de type de plusieurs colonnes de pandas DataFrame avec un type en même temps
Effacez les fichiers image à la fois avec un seul support
Une commande pour mettre à jour automatiquement la bibliothèque pip dans un batch
Enregistrer plusieurs styles personnalisés dans Word à la fois
Limites qui peuvent être analysées à la fois avec MeCab
Acquérir plusieurs Excels à la fois avec glob (résultat de la prédiction d'apprentissage automatique Borace, confirmation pour juin)