如何使用 sqlalchemy 从 pandas 数据集更新数据库 table

How to update a db table from pandas dataset with sqlalchemy

我需要更新 MSSQL 数据库中的 table。 table 的维度不允许将 table 加载到内存中,修改数据帧并将其重写回来。

我还需要一次只更新一列,所以我不能使用 中提出的解决方案(即解决方案建议对感兴趣的行进行删除操作,这对我来说不可能,因为我只能更新一次一列)

所以我需要执行类似更新自查询的操作

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

其中 mytable 是一个 dbtable 并且 df 是一个 pandas Dataframe。

是否可以使用 SQLALCHEMY 执行此类功能?

使用要在 ms sql 数据库中更新的键和列创建临时 table。然后对服务器进行更新调用。以下是使用 sqlalchemy

的代码片段

您可以使用以下方式:

engine = create_engine('mssql+pymssql://scott:tiger@hostname: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)