我想自动建立一个SA-映射 对象..的浅表副本此刻我的功能就是:的SQLAlchemy:浅拷贝避免延迟加载
newobj = src.__class__()
for prop in class_mapper(src.__class__).iterate_properties:
setattr(newobj, prop.key, getattr(src, prop.key))
,但我有麻烦懒惰的关系......显然GETATTR 触发延迟加载,但因为我并不需要它们的值正确 了,我想刚才复制的 属性的“这应该是延迟加载”状态.. 。 这可能吗?
编辑:我需要这个“数据记录”系统..也就是说,只要有人更新持久实体,我不得不产生一个新的记录,然后标记旧的这样。
为了做到这一点,我创建实体的浅表副本(所以SQLA发出INSERT而不是UPDATE)和工作从那里.. 该系统的工作原理相当不错(它已经在生产中使用了几个月),但现在我我想加强它,这样它就不需要所有的关系首先加载懒惰。
是改变它的日志记录?它看起来更像是保持所有历史状态历史的版本控制系统。 – 2009-10-26 09:37:35
没错,它保持,而不是'class_mapper(SRC .__类__)'实体 – Joril 2009-10-26 09:59:19
的每一个版本,执行'object_mapper(SRC)'。避免直接访问'__foo__'属性。 – nosklo 2009-10-26 10:10:41