首页 > 解决方案 > Sqlalchemy:session.query() 与 conn.execute()

问题描述

我发现每个会话都.rollback()在关闭时调用。

因此,为了获得最佳性能,如果我只需要单选(不需要事务)比重写代码更好

session = init_session()
result = session.query(Currency.id, Currency.code).all()
session.close()

conn.execute()?

标签: pythonsqlalchemy

解决方案


由于 Python 的DB-API 2.0 规范,您将在事务中运行所有内容,即使您使用 SQLAlchemy 的模拟“自动提交”功能,除非您明确选择将事务隔离级别设置"AUTOCOMMIT"并且您的驱动程序支持它。从性能的角度来看,在事务中运行查询的影响应该可以忽略不计。请记住在完成后关闭事务,您似乎正在这样做,以便释放任何保留的资源。


推荐阅读