Python 为什么此回滚功能不能按预期工作
我将执行两个sql查询,并将它们放入事务中,如果任何查询失败,则调用Python 为什么此回滚功能不能按预期工作,python,python-db-api,Python,Python Db Api,我将执行两个sql查询,并将它们放入事务中,如果任何查询失败,则调用rollback()。代码如下所示,其中包含2个查询 stru trunction:截断表格& str\u insert:插入一些行 代码: try: mydb.start_transaction(consistent_snapshot=False, isolation_level=None,
rollback()
。代码如下所示,其中包含2个查询
stru trunction
:截断表格&
str\u insert
:插入一些行
代码:
try:
mydb.start_transaction(consistent_snapshot=False,
isolation_level=None,
readonly=None)
mycursor.execute(str_truncate)
mycursor.executemany(str_insert+'ssss', [data[i].values() for i in range(len(data))])
raise Exception
mycursor.commit()
except Exception, e:
mydb.rollback()
print("Error captured, rollback. \n %s" % e[0])
finally:
mycursor.close()
mydb.close()
如图所示,我使用
+'ssss'
创建了一个异常,当我执行代码时,异常strError captured…
按预期显示,这意味着应该执行函数rollback()
。但是,我的表仍然被截断。为什么会发生这种情况?在try语句之后添加此行
mydb.autocommit = false
你从哪里开始你的承诺?如果您没有开始提交,那么默认情况下,您将以自动提交模式结束。感谢您的回复,这一切正常!但我只是尝试了
start\u transaction
功能(如主帖子中的shwon)手动启动事务。但这一功能不起作用。为什么执行mycursor.execute(str_truncate),然后提交(因为autocommit设置为true),然后mycursor.executemany(..)启动并提交另一个事务