【发布时间】:2020-04-04 01:49:27
【问题描述】:
我将执行 2 个 sql 查询,我想将它们放入一个事务中,如果任何查询失败,则调用 rollback()。代码如下所示,2个查询是
str_trunction: 截断表格 &
str_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'创建了一个异常,当我执行代码时,Exception str Error captured ...如预期显示,这意味着函数rollback()应该被执行。但是,我的表仍然被截断。为什么会发生这种情况?
【问题讨论】:
-
你在哪里开始你的提交?如果你不开始提交,那么默认情况下你会进入自动提交模式。
标签: python python-db-api