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()
それが指すオブジェクトの古いバージョンを取得することもできます。
これを sqlalchemy のバージョン管理コードに実装する方法は、person_history というテーブルを追加することです。このテーブルには、Person が特定のバージョンで持っていたすべてのフィールド + バージョン フィールドが含まれています。
ただし、必要なのは、リレーションにバージョン管理を適用することです。たとえば、おそらくこの人物は以前は車を持っていましたが、今は持っていないので、彼が持っていたバージョンを取得する必要があります。これを可能にするために例を拡張する最良の方法を誰かが提案できますか?