在使用sqlalchemy仅进行query查询时(没有变更数据),为什么打印日志中会出现ROLLBACK信息?

【打印的信息】

经测试这个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()吗?

阅读 508
评论 2019-01-20 提问
    1 个回答
    Hawaii
    • 939

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

    评论 赞赏 2019-01-21
      撰写回答

      登录后参与交流、获取后续更新提醒