Daa*_*ker 5 sql sqlalchemy python-2.7
我正在尝试为我的sqlalchemy数据库实现版本控制(使用此处的示例:http://docs.sqlalchemy.org/en/rel_0_7/orm/examples.html#versioned-objects,以及源tarball中的history_meta.py .)
使用这个例子,我能够成功获得一个旧版本的对象:
history = Person.__history_mapper__.class_
old_person = history.filter(Person.id = instance.id,
history.version==someoldversion).one()
Run Code Online (Sandbox Code Playgroud)
我也可以获得它指向的任何对象的旧版本.
在sqlalchemy版本控制代码中实现的方式是添加一个名为person_history的额外表.此表包含Person在特定版本+版本字段中的所有字段.
但是,我需要的是对关系进行版本控制.例如,也许这个人过去常常有车,但现在不需要了,我需要获得他所拥有的版本.任何人都可以建议扩展示例的最佳方法,以实现这一目标吗?
您的问题作为数据建模问题可能比找出 SA 中的功能更容易解决。在您的“人-汽车”示例中,人们可以将隐含的多对多关系 (car_ownership_timeperiods) 想象为标题,该对象记录了“人”对汽车的所有权。
通过将隐式多对多关系表提升为架构中的成熟对象,您可以保留关联人员和汽车的能力,并且还可以在标题上使用 SA 的所有功能,包括跟踪历史记录(如果您愿意)(尽管对您的示例的查询(一个人过去拥有哪些汽车)是一个简单的等值连接)。
归档时间: |
|
查看次数: |
1496 次 |
最近记录: |