0

【打印的信息】

经测试这个ROLLBACK,在代码中self.db.close() 前执行
clipboard.png

【代码和配置】

业务代码
clipboard.png

session配置代码使用默认: autoflush=True, autocommit=False, expire_on_commit=True

【自己查询的信息】

1、sqlalchemy在进行query操作时,会先执行一下flush(),把信息提交到数据库(但没有commit)

2、在查询后增加self.db.commit() 就没有打印ROLLBACK信息了

网页没有查到相关的解释

所以想问,query操作时,没有变更数据,运行机理是什么?为什么的会出现的ROLLBACK信息,查询也一定要进行commit()吗?

ranxiu 6
2019-01-20 提问
1 个回答
2

已采纳

1.每次开启一个session,都会开启一个事务
2.close一个session时,如果事务还没有提交,将会回滚
3.commit()之后,事务已经提交,close时就不会回滚了

撰写答案

推广链接