为什么这个回滚功能没有按预期工作

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