我想知道当另一个进程更新同一对象的某些属性时,SQLAlchemy 是否可以支持从数据库即时加载对象的当前状态。
我想提一下,我正在从 SQLObject 迁移到 SQLAlchemy。目前,使用 SQLObject,我有一张表,例如:
class MyConfiguration(SQLObject):
class sqlmeta:
cacheValues = False
attr1 = StringCol(default='')
attr2 = IntCol(default=0)
如您所知,此 cacheValues=False 设置会立即将属性更新刷新到磁盘:
global my_config
my_config = MyConfiguration()
my_config.attr1 = 'some value'
即时 attr1 设置为“某个值”,该值可用于使用相同对象 my_config 的另一个进程。
我已经阅读了 SQLAlchemy 的 ORM 和 Core 的基本教程,据我所知,我可以通过使用 session.merge() 来实现这一点,因为除非我添加或合并,否则 SQLAlchemy 中的“my_config”状态不会变为挂起/脏,并且 autoflush=True,后续查询将重新读取表中的行。
我认为的另一个选择是我可以覆盖 MyConfiguration 中的setattr以立即刷新对实例的更改。但是,我不喜欢这样,因为这很难看,我想尽可能多地使用 SQLAlchemy 的功能,而不是破解一些东西。
所以我试图在 SQLAlchemy 中找到这个 SQLObject 的特性的完全匹配。这可能吗?
在此先感谢您的帮助。