sqlalchemy:具有不同联接类型的多个联接,并指定要联接的关系

2024-09-29 22:24:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试做一个多重连接,其中每个后续的表都使用relationship()属性上的内部join()连接先前连接的表,但是我想要一个outerjoin()用于Table4。在

查询如下:

self.s.query(Table1, Table2, Table3, Table4) \
      .join('relationship2', 'relationship3') \
      .outerjoin('relationship4') \
      .all()

结果是Table4试图连接到Table1,而不是根据需要在Table3.relationship4上连接,从而产生InvalidRequestError:

^{pr2}$

如何指定给outerjoin()以使用表3中的自然外键关系?在


Tags: self属性allqueryjointable2table1table3
1条回答
网友
1楼 · 发布于 2024-09-29 22:24:44

因此,如果直接指定更健壮的model类,而不是尝试在relationship()属性名上联接,这就非常简单了。我相信只有在两个表之间有一个外键关系时,这才有效。SQLA join docs here.

例如,这将生成我要查找的内容,其中表4显示为None,其中没有匹配的行:

self.s.query(Table1, Table2, Table3, Table4) \
  .join('relationship2', 'relationship3') \
  .outerjoin(Table4) \ # reference the model class directly here
  .all()

相关问题 更多 >

    热门问题