一尘不染

如何禁用SQLAlchemy缓存?

mysql

使用时出现缓存问题sqlalchemy

sqlalchemy用来将数据插入MySQL数据库。然后,我有另一个应用程序处理此数据,并直接对其进行更新。

但是sqlalchemy总是返回旧数据而不是更新数据。我认为已sqlalchemy缓存了我的请求……所以……我应如何禁用它?


阅读 583

收藏
2020-05-17

共1个答案

一尘不染

人们通常认为,除了在事务本地使用的常规SQLAlchemy身份映射之外,还存在“缓存”的作用,这是因为他们正在观察事务隔离的影响。默认情况下,SQLAlchemy的会话在事务模式下工作,这意味着它等待直到session.commit()被调用才能将数据持久保存到数据库中。在此期间,其他地方正在进行的其他事务将看不到此数据。

但是,由于交易具有隔离性,因此存在额外的变数。正在处理的其他事务不仅在提交之前不会看到您的事务数据,在某些情况下也要 在提交或回滚
之前才看到它们的数据(这与close()在此处具有的效果相同) 。具有平均 隔离
度的事务将保持到目前为止已加载的状态,并且即使真实数据已更改,也会继续为您提供该事务本地的相同状态-这在事务隔离中被称为 可重复读取

http://en.wikipedia.org/wiki/Isolation_%28database_systems%29

2020-05-17