SQLAlchemy - 连接条件因AttributeError而失败:"BinaryExpression"对象和"Comparator"对象都没有属性"selectable"

Ein*_*din 8 python sqlalchemy pyramid

我正在使用Pyramid运行SQLAlchemy.我正在尝试使用自定义"加入"条件运行查询:

DBSession.query(A)\
        .outerjoin(A.b, B.a_id == A.id)\
        .all();
Run Code Online (Sandbox Code Playgroud)

但是查询失败了以下错误:

AttributeError:'BinaryExpression'对象和'Comparator'对象都没有属性'selectable'

问题源于条件,就像我删除它,查询工作:

DBSession.query(A)\
        .outerjoin(A.b)\
        .all();
Run Code Online (Sandbox Code Playgroud)

我不明白这个问题,因为我遵循文档中描述的语法:

q = session.query(User).join(Address,User.id == Address.user_id)

有谁看到发生了什么?

Ein*_*din 13

好的,我看到了.如果添加自定义条件,则语法不是.outerjoin(A.b, ...),而是.outerjoin(B, ...)

他们应该接受这两个,真的

(和错误消息可能是有点更明确)

  • 您是回答自己的问题并在3年后为陌生人节省时间的圣人 (2认同)