0

バージョン管理された SQLAlchemy クラスの履歴を呼び出すときに問題が発生しているようです。次の継承構造のセットアップがあります。

Node(Versioned, Base)
Specimen(Node)
Animal(Specimen)

によって生成されたクエリを使用して動物の履歴を取得しようとすると:

AnimalHistory = self.__history_mapper__.class_
q = object_session(self).query(AnimalHistory).filter(AnimalHistory.id == self.id).order_by(AnimalHistory.version.desc())

logger.debug(q)

次のクエリを取得します。

SELECT bla bla #trimmed for brevity                                                                                                                                                                    FROM node_history 
JOIN specimen_history ON node_history.id = specimen_history.id AND node_history.version = specimen_history.version 
JOIN animal_history ON specimen_history.id = animal_history.id 
WHERE animal_history.id = 28 
ORDER BY animal_history.version DESC

基本的に、animal_history JOIN で適切な「AND」ステートメントが欠落しているようです。このため、動物と(標本、ノード)の間に不要なデカルト積が得られます

これを修正するために history_meta.py 内で必要な変更を誰か指摘できますか?

ありがとう !!

4

1 に答える 1

0

回答は、SQLAlchemy Google グループを通じて実際に提供されました。

https://groups.google.com/forum/#!topic/sqlalchemy/YVAI4C94NBs

于 2013-11-21T19:21:03.257 に答える