使用数据帧

时间:2018-03-29 19:36:44

标签: python sql-server sqlalchemy

我试图用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进行了一些查询,将这些数据存储在Dataframes中,并对它们进行了必要的计算。我现在还不知道如何使用SQLAlchemy将数据放回服务器,无论是使用原始SQL还是函数调用。我在我端的数据框基本上必须在MSSQL Server中创建的临时表的位置工作,但我不知道如何做到这一点。

困难当然是我不知道在数据框和mssql表之间加入的方法,我猜这不会起作用所以我在寻找解决方法

1 个答案:

答案 0 :(得分:1)

正如大熊猫医生建议here

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

引擎参数基本上是连接字符串,请检查它here

if_exist 参数非常棘手,因为'替换'实际上先删除表,然后重新创建它,然后一次插入所有数据。

通过将echo属性设置为True,它显示所有后台日志和sql&#39。