在调用版本化 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 中需要的修改以解决这个问题吗?
谢谢 !!