Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么此回滚功能不能按预期工作_Python_Python Db Api - Fatal编程技术网

Python 为什么此回滚功能不能按预期工作

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,

我将执行两个sql查询,并将它们放入事务中,如果任何查询失败,则调用
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'
创建了一个异常,当我执行代码时,异常str
Error captured…
按预期显示,这意味着应该执行函数
rollback()
。但是,我的表仍然被截断。为什么会发生这种情况?

在try语句之后添加此行

mydb.autocommit = false

你从哪里开始你的承诺?如果您没有开始提交,那么默认情况下,您将以自动提交模式结束。感谢您的回复,这一切正常!但我只是尝试了
start\u transaction
功能(如主帖子中的shwon)手动启动事务。但这一功能不起作用。为什么执行mycursor.execute(str_truncate),然后提交(因为autocommit设置为true),然后mycursor.executemany(..)启动并提交另一个事务