【问题标题】:Update MSSQL table through SQLAlchemy using dataframes使用数据框通过 SQLAlchemy 更新 MSSQL 表
【发布时间】:2018-04-02 17:59:34
【问题描述】:

我正在尝试用 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 表之间进行连接,我猜这行不通,所以我正在寻找解决方法

【问题讨论】:

  • 您找到任何方法了吗?我正在尝试做类似的任务..

标签: python sql-server sqlalchemy


【解决方案1】:

正如 pandas 文档所建议的 here

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

engine msSql 的参数基本上是连接字符串检查它here

if_exist 参数是一个复杂的参数,因为“替换”实际上是先删除表,然后重新创建它,然后一次插入所有数据。

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

【讨论】:

猜你喜欢
  • 2019-12-12
  • 1970-01-01
  • 2021-05-14
  • 1970-01-01
  • 2014-03-22
  • 1970-01-01
  • 2018-03-26
  • 2016-01-07
  • 1970-01-01
相关资源
最近更新 更多