pandas .read_sql() 出现“此结果对象不返回行”错误

问题描述 投票:0回答:1

我试图简单地删除 sql 表中上个月的记录。

    df_month_exist = pd.read_sql(''' DELETE FROM DATATABLE WHERE RECORD_MONTH = DATEADD(MONTH, DATEDIFF(MONTH, -1, GETDATE())-1, -1) ''', con=sqlalchemy)

在 SSMS 中执行时没有错误,但我在 python 中收到此错误:

sqlalchemy.exc.ResourceClosedError:此结果对象不返回行。已经自动关闭了。

我正在使用 sqlalchemy 2.025、pandas 2.1.4、pyodbc 5.0.1 和 SSMS 19.2

我尝试在sql语句中使用SET NOCOUNT ON,但这没有帮助。

python sqlalchemy
1个回答
0
投票

您的

DELETE
语句不返回行,因此
.read_sql()
不是正确的方法。相反,你应该做类似的事情

with engine.begin() as conn:
    conn.exec_driver_sql("DELETE …")
# the statement is committed when the context manager ("with" block) exits
© www.soinside.com 2019 - 2024. All rights reserved.