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 Groups 提供的:

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

于 2013-11-21T19:21:03.257 回答