SQLalchemy:在两列上连接一个表

时间:2015-04-29 13:59:53

标签: python sql join sqlalchemy

我必须加入两个表,其中第一个表包含对第二个表的两个敬意。例如。第一个表拥有列START_ID和END_ID。第二个表包含职位。如何以我可以访问START和END值的方式加入它们。 这是我尝试过的:

    endp = aliased(POSITIONS)
    startp = aliased(POSITIONS)
    trans_data = self.atomic_db.session.query(ONE, endp, startp
                                              ).join(
        endp,
        ONE.start_id == startp.id).join(source_level,
        ONE.end_id == endp.id).values(
        ONE.id, endp.value ,
        startp.value)

Ť

1 个答案:

答案 0 :(得分:0)

您的联接没有正确订购,您应该写道:

endp = aliased(POSITIONS)
startp = aliased(POSITIONS)
trans_data = self.atomic_db.session.query(ONE, endp, startp)\
    .join(endp, ONE.end_id == endp.id)\
    .join(startp, ONE.start_id == startp.id)\
    .values(ONE.id, endp.value ,startp.value)

此外,您想要更新还是只是获取查询结果?如果是后者 - 你不需要" .values"