我在sqlAlchemy中使用ORM Mapping 0.6.8.
我有三张表(A,B和C),他们之间没有外键.
我正在尝试加入表A和B,然后与C进行外连接.我期待一个名为元组,字段A,B和C,C字段有时设置为无.)
我可以通过选择两个表来轻松地完成第一次连接.
(session.query(A,B) .filter(A.some_field = B.some_other_field))
这让我得到一个名为“A”和“B”的元组.
然后我添加外连接,使其成为:
(session.query(A,B) .filter(A.some_field==B.some_other_field)) .outerjoin((C,A.some_field==C.some_different_field))
结果仍然只有两个表.我无法访问C的其他字段(即使在它们存在的情况下).
做一个左外连接的正确方法是什么,以访问最右边的表的字段?
我宁可不回避基本的sql,如果我可以避免它 – 我正在努力学习利用ORM.
解决方法
这应该工作:
(session.query(A) .join(B,A.some_field == B.some_other_field) .outerjoin(C,A.some_field == C.some_different_field) .add_entity(B) .add_entity(C))