2017-08-11 152 views
0

我需要更新MSSQL數據庫中的表。 表的維度不允許在內存中加載表,修改數據框並將其重新寫回。如何使用sqlalchemy從pandas數據集更新數據庫表

我還需要一次只更新一列,因此我不能使用this topic中提出的解決方案(即解決方案提出了對感興趣的行進行刪除操作,對我來說不可能,因爲我可以只更新一列)

所以我需要像進行一些更新,從查詢中

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

mytable是一個DbTable和df是大熊貓數據幀。

使用SQLALCHEMY可以執行這種功能嗎?

+0

請註明電流輸入和預期的輸出用一個例子 –

回答

3

使用要在ms sql數據庫中更新的密鑰和列創建臨時表。然後對服務器進行更新調用。下面是使用的SQLAlchemy

代碼片段

您可以使用以下方法:

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)