peewee的事务为什么都无效
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;
来修改表的存储引擎
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论