如何使用SQLAlchemy从熊猫数据集中更新数据库表

pao*_*f89 0 python sqlalchemy pyodbc pymssql pandas

我需要更新MSSQL数据库中的表。表的尺寸不允许将表加载到内存中,修改数据框并重新写回。

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

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

Update mytable
set mycolumn = dfcolumn
from df
where mytable.key=df.key
Run Code Online (Sandbox Code Playgroud)

其中mytable是dbtable,df是熊猫数据框。

可以使用SQLALCHEMY执行这种功能吗?

how*_*ark 5

用要在ms sql数据库中更新的键和列创建一个临时表。然后对服务器进行更新调用。以下是使用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)
Run Code Online (Sandbox Code Playgroud)

  • 如何更新所有列?我需要手动`col1 = t.col1`,`col2 = t.col2`吗? (2认同)