如何使用 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)
我需要更新 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)