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

时间:2013-11-05 20:37:24

标签: sqlalchemy

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

谢谢!

1 个答案:

答案 0 :(得分:0)

答案实际上是通过SQLAlchemy Google网上论坛提供的:

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