使用dataframes通过SQLalchemy更新MSSQL表



我正在尝试用python替换一些旧的MSSQL存储过程,以尝试从SQL Server中取出一些重型计算。我要替换问题的过程的一部分如下

UPDATE mytable
SET calc_value = tmp.calc_value
  FROM dbo.mytable mytable INNER JOIN 
       @my_temp_table tmp ON mytable.a = tmp.a AND mytable.b = tmp.b AND mytable.c = tmp.c
  WHERE (mytable.a = some_value)
    and (mytable.x = tmp.x)
    and (mytable.b = some_other_value)

到目前为止,我对SQLalchemy进行了一些查询,将这些数据存储在数据范围中,并对它们进行了必要的计算。我现在不知道如何使用SQLalchemy(使用RAW SQL或功能调用(将数据放回服务器中。我目的的数据框架本质上必须在MSSQL Server中创建的临时表工作,但我不确定如何做到这一点。

困难当然是我不知道在数据框和MSSQL表之间加入的方法,而且我猜这是行不通的,所以我正在寻找解决方法

正如熊猫doc所建议的那样:

from sqlalchemy import create_engine 
engine = create_engine("mssql+pyodbc://user:password@DSN", echo = False)
dataframe.to_sql('tablename', engine , if_exists = 'replace')

引擎 MSSQL的参数基本上是连接字符串在此处检查

if_exist 参数很棘手,因为"替换"实际上首先删除表,然后重新创建它,然后立即插入所有数据。

通过将ECHO属性设置为true,它显示了所有背景日志和SQL。

最新更新