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

时间:2012-01-31 08:48:39

标签: python migration sqlalchemy sqlobject

我想知道当另一个进程更新同一对象的某些属性时,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特性的完全匹配。这可能吗?

提前感谢您的帮助。

0 个答案:

没有答案