为什么这个回滚功能没有按预期工作
Why does this rollback function not work as expected
我要执行 2 sql 个查询,我想将它们放入事务中,如果任何查询失败,则调用 rollback()
。代码如下所示,2个查询是
str_trunction
: 截断 table &
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()
应该是执行。但是,我的 table 仍然被截断了。为什么会这样?
在 try 语句之后添加这一行
mydb.autocommit = false
我要执行 2 sql 个查询,我想将它们放入事务中,如果任何查询失败,则调用 rollback()
。代码如下所示,2个查询是
str_trunction
: 截断 table &
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()
应该是执行。但是,我的 table 仍然被截断了。为什么会这样?
在 try 语句之后添加这一行
mydb.autocommit = false