SQLAlchemy对于只读查询,使用什么:session.expire()vs session.commit()?

时间:2019-06-27 07:14:59

标签: python sqlalchemy

session.commit()查询期间需要SQLAlchemy以避免过时的数据(在我仅从数据库中获取/读取数据的情况下),我感到很困惑。

还有一个session.expire()选项,显然是在session.commit()之后调用的,{前提是expire_on_commit = True,默认情况下}。

如果仅从数据库中获取数据,是否有必要单独使用session.commit()session.expire()

在我们当前的设置中,session.commit()完成该工作。将其替换为session.expire()可以解决问题吗?

需要花费几天的时间来测试数据是否过时。 我们不拥有数据库,因此不应该在此进行任何更改。恐怕session.commit()可能会意外将更改推入数据库。

1 个答案:

答案 0 :(得分:0)

会话期满后,下次您尝试访问已加载的数据时,将提示从数据库进行访存。由于您不希望对数据库进行任何更改,因此我认为没有足够的理由。

请注意,session.expire_all()是在session.commit()之后调用的,因此,我建议将session.commit()替换为session.expire_all(),或在您所有实例上小心调用session.expire()希望刷新。