def ts():
try:
db_wrapper.database.set_autocommit(False)
info = t_People()
info.Phone = WebClass.requestToString('Phone')
info.Story = WebClass.requestToString('Story')
newid = t_PeopleEntity.insert(**info.toKeyValue()).execute()
if newid > 0:
return True
else:
return False
except:
db_wrapper.database.rollback()
return False
文档里说,可以手动取消自动提交,然后自己通过begin()
和commit()
来触发事务,但是这代码,我压根没有写这2个函数,但是依然可以提交事务。。。而且,就算我强制执行rollback
,也无法回滚事务。
试了文档里面说的几种写法,什么with,注解之类的,都是无法回滚事务。
噢。。我知道原因了,原来是我mysql的某些表存储引擎不是InnoDB。
可以用show table status from db_name where name='table_name';
来查询表的存储引擎
用alter table table_name engine=innodb;
来修改表的存储引擎