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;来修改表的存储引擎

阅读 3.8k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题