从SQLObject迁移到SQLAlchemy::SQLAlchemy支持零缓存和自动加载表更新吗?

2024-04-26 12:35:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我想知道当另一个进程更新同一对象的某些属性时,SQLAlchemy是否能够支持从数据库中即时加载对象的当前状态。在

我想说的是,我正在从SQLObject迁移到SQLAlchemy。使用SQLObject,目前,我有一个表,如:

class MyConfiguration(SQLObject):
    class sqlmeta:
        cacheValues = False
    attr1 = StringCol(default='')
    attr2 = IntCol(default=0)

如您所知,此cacheValues=False设置会立即将属性更新刷新到磁盘:

^{pr2}$

instant attr1设置为“some value”,该值可用于另一个使用相同object my\u config的进程。在

我已经学习了SQLAlchemy的ORM和Core的基本教程,据我所知,最接近我实现这一点的方法是使用会话.合并()因为除非添加或合并,否则SQLAlchemy中“my_config”的状态将不会变为pending/dirty,并且autoflush=True,因此后续查询将从表中重新读取该行。在

我认为另一个选择是我可以在MyConfiguration中跳过setattr,立即刷新对实例的更改。但是,我不喜欢这样,因为这太难看了,我希望尽可能多地使用SQLAlchemy的特性,而不是我在做什么。在

所以我试图在SQLAlchemy中找到这个SQLObject特性的完全匹配。这可能吗?在

提前谢谢你的帮助。在


Tags: 对象configfalsedefault属性sqlalchemy进程my