我认为一个安全的 JOIN 受其外键约束。还有一个隐含的,只提到它的目标。
在 SQLAlchemy 中,session.query(User).join(Addresse)
可能是约束,也可能不是约束,这取决于 SQLAlchemy 是否知道用户和地址之间的关系。
有时我构建一个复杂的查询,我想确保所有连接都是约束。我该如何检查?我最希望 SQLAlchemy 在隐式.join(table)
找不到它的外键时给我一个例外......
“复杂查询”的示例:
session.query(addr_alias1).join(User).join(addr_alias2)
对于最后一个连接,一个过于明确的方式是.join(addr_alias2, User.addresses)
,但正如我所说,我想要一个隐式语法,如果它失败,它就会吠叫。