Python pandas.io.sql.execute未自动提交

Python pandas.io.sql.execute未自动提交,python,sql,pandas,execute,Python,Sql,Pandas,Execute,我试图在表中插入新数据之前删除一些行(过去30天必须每天更新以获得准确的数字) 我正在执行这个: from datetime import date, datetime, timedelta import pandas as pd from sqlalchemy import create_engine conn = create_engine("insert here string for connection") conn.execution_options(autocommit =

我试图在表中插入新数据之前删除一些行(过去30天必须每天更新以获得准确的数字)

我正在执行这个:

from datetime import date, datetime, timedelta  
import pandas as pd from sqlalchemy import create_engine

conn = create_engine("insert here string for connection")
conn.execution_options(autocommit = True) 
start_date = datetime.strftime(date.today() - timedelta(days = 30),'%Y-%m-%d')
end_date = datetime.strftime(date.today(),'%Y-%m-%d')

delete_query = "delete from table where date between %s and %s" %(start_date,end_date)

pd.io.sql.execute(delete_query, conn)

虽然我没有得到任何错误,但我可以在数据库中看到表总是被复制的。有什么想法吗?

尝试将“自动刷新”和“提交时过期”设置为False:

conn.execution_options(autocommit=True, autoflush=False, expire_on_commit=False) 
在没有标定事务的情况下,会话无法进行 关于何时应进行自动刷新或何时进行自动刷新的适当决策 应自动过期,因此应禁用这些功能 如果autoflush=False,则在提交时过期

有关更多详细信息:

我们只需要添加instance.autocommit=True,如下所示:
cnxn.autocommit=True

我刚刚完成了尝试,不幸的是,同样的结果。我也愿意采取变通办法。我尝试在事务中实际使用它,但我得到的反馈是连接没有“提交”方法。基本上我试过这样的方法:
db=my\u connection db.begin()conn=db.connect()conn.execute(delete\u query)db.commit()conn.close()
在这种特殊情况下,我只使用sqlalchemy来创建引擎,然后处理它。在整个代码中,我使用相同的连接,但格式为psycopg2,用于其他方法。这会对它产生某种影响吗?虽然我很确定在这种情况下,很明显它只使用了sqlalchemy create_engine方法。请看一下这个链接:我发现了错误:)我想我必须在它上面睡觉。显然,删除查询中%s周围缺少引号。这就是我打印时的输出<代码>从日期介于2015-08-03和2015-09-03之间的表中删除,应该是这样的:
从日期介于“2015-08-03”和“2015-09-03”之间的表中删除。
这样一个愚蠢的错误。无论如何,谢谢你的帮助!