2017-08-11 5 views
0

J'ai besoin de mettre à jour une table dans une base de données MSSQL. La dimension de la table ne permet pas de charger la table en mémoire, de modifier l'image et de la réécrire. J'ai également besoin de mettre à jour une seule colonne à la fois, donc je ne peux pas utiliser la solution proposée dans this topic (ie la solution propose une opération de suppression des lignes intéressées, impossible pour moi car je ne peux mettre à jour qu'une colonne à la fois)Comment mettre à jour une table db d'un dataset pandas avec sqlalchemy

donc je dois faire quelque chose comme une mise à jour de-requête

Update mytable 
set mycolumn = dfcolumn 
from df 
where mytable.key=df.key 

dans lequel mytable est DbTable et df est un dataframe de pandas géants.

Est-il possible d'effectuer ce genre de fonction avec SQLALCHEMY?

+0

S'il vous plaît spécifier l'entrée en cours et les résultats escomptés avec un exemple –

Répondre

3

Créez une table temporaire avec la clé et la colonne que vous souhaitez mettre à jour dans la base de données ms sql. Et puis faites un appel de mise à jour au serveur. Voici l'extrait de code à l'aide sqlalchemy

Vous pouvez utiliser de la manière suivante:

engine = create_engine('mssql+pymssql://scott:[email protected]:port/dbname') 
df.to_sql('temp_table', engine, if_exists='replace') 

sql = "UPDATE final_table AS f" + \ 
     " SET col1 = t.col1" + \ 
     " FROM temp_table AS t" + \ 
     " WHERE f.id = t.id" 

with engine.begin() as conn: 
    conn.execute(sql)