我想知道当另一个进程更新同一对象的某些属性时,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()实现这一点,因为除非我添加或合并,否则“my_config”的状态为SQLAlchemy不会变为挂起/脏,并且使用autoflush = True,后续查询将重新读取表中的行。
我认为另一种选择是我可以在MyConfiguration中覆盖 setattr 以立即刷新对实例的更改。但是,我不喜欢这个,因为这很难看,我想尽可能多地使用SQLAlchemy的功能而不是黑客攻击。
所以我试图在SQLAlchemy中找到这个SQLObject特性的完全匹配。这可能吗?
提前感谢您的帮助。