SQLAlchemy中的多级继承和版本控制问题

SQLAlchemy中的多级继承和版本控制问题,sqlalchemy,Sqlalchemy,调用版本化SQLAlchemy类的历史记录时,我似乎遇到了一个问题。 我有以下继承结构设置: Node(Versioned, Base) Specimen(Node) Animal(Specimen) 如果我尝试使用以下生成的查询获取动物历史记录: AnimalHistory = self.__history_mapper__.class_ q = object_session(self).query(AnimalHistory).filter(AnimalHistory.id == self

调用版本化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
基本上,我似乎错过了关于动物史的适当的“和”陈述。 正因为如此,我得到了动物和(样本,节点)之间不需要的笛卡尔积

有人能指出为了解决这个问题,在history_meta.py中需要进行哪些修改吗


谢谢

答案实际上是通过SQLAlchemy谷歌集团提供的: