首页 > 数据库 > mysql教程 > 为什么我在数据库中更改 SQLAlchemy 数据后没有更新?

为什么我在数据库中更改 SQLAlchemy 数据后没有更新?

Barbara Streisand
发布: 2024-11-28 20:40:12
原创
254 人浏览过

Why Doesn't My SQLAlchemy Data Update After I Change it in the Database?

克服 SQLAlchemy 中的 ORM 数据缓存

利用 SQLAlchemy 进行数据管理时,用户可能会遇到一个明显的缓存问题,其中检索的数据保持不变,尽管直接对数据库进行更新。这可能是一个令人费解的困境。

揭晓缓存:了解事务隔离

所经历的行为不是由于 SQLAlchemy 中的显式缓存,而是一个基本特征事务隔离。默认情况下,SQLAlchemy 以事务模式运行。数据修改仅在调用 session.commit() 时写入数据库。

但是,事务隔离引入了一个扭曲。虽然其他活动事务无法立即访问修改后的数据,但即使在提交或回滚自己的事务之后,它们也可能无法看到它。这种现象称为可重复读取,可确保事务维持其已加载的状态,即使实际数据已更改。

禁用感知缓存

而不是真正的缓存,可以通过使用连接池来减轻事务隔离的影响。通过确保所有连接都源自公共池,您可以避免跨不同连接的数据缓存并提高更新的可见性。要启用连接池,请将 pool_recycle 参数设置为非零值。

例如:

engine = create_engine('mysql://user:password@host/db', pool_recycle=3600)
登录后复制

在此实例中,连接将每 3600 秒回收一次,防止数据缓存问题与事务隔离相关。

以上是为什么我在数据库中更改 SQLAlchemy 数据后没有更新?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板