我试图简单地删除 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,但这没有帮助。
您的
DELETE
语句不返回行,因此 .read_sql()
不是正确的方法。相反,你应该做类似的事情
with engine.begin() as conn:
conn.exec_driver_sql("DELETE …")
# the statement is committed when the context manager ("with" block) exits