在调用版本化的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中需要修改才能解决这个问题?
谢谢!
答案 0 :(得分:0)
答案实际上是通过SQLAlchemy Google网上论坛提供的:
https://groups.google.com/forum/#!topic/sqlalchemy/YVAI4C94NBs