Python sqlalchemy作为新名称联接过滤器新名称.column==值
我正在寻找一种在筛选器中引用联接表的方法。我的问题是:Python sqlalchemy作为新名称联接过滤器新名称.column==值,python,sqlalchemy,Python,Sqlalchemy,我正在寻找一种在筛选器中引用联接表的方法。我的问题是: session.query(A).outerjoin(B, C, D).filter(B.column_b == 1, C.column_c == 2) 我如何在不命名模型B和C的情况下进行这种过滤 session.query(A).outerjoin(B, C, D).filter_by(column_b=1, column_c=2) 无法工作,因为filter_by尝试在D中查找“column_b”和“column_c”。别名()和
session.query(A).outerjoin(B, C, D).filter(B.column_b == 1, C.column_c == 2)
我如何在不命名模型B和C的情况下进行这种过滤
session.query(A).outerjoin(B, C, D).filter_by(column_b=1, column_c=2)
无法工作,因为filter_by尝试在D中查找“column_b”和“column_c”。别名()和别名()也无法工作。我以
{“column\u a”:0,“column\u b”:1,“column\u c”:2}
的形式接收字段\u到\u值的dict,我需要从中创建一个查询。当然,我可以有一个像{“column_a”:a.column_b,“column_b”:b.column_b,“column_c”:c.column_c}
这样的映射。但应该有更好的办法
有什么好方法可以进行过滤吗?过滤方式在最后一次加入时适用,因此您应该能够打断您的外套。尝试:
session.query(A).outerjoin(B).filter_by(column_b == 1)
.outerjoin(C).filter_by(column_c == 2)
.outerjoin(D)
“筛选依据”适用于最后一次连接,因此您应该能够断开外套。尝试:
session.query(A).outerjoin(B).filter_by(column_b == 1)
.outerjoin(C).filter_by(column_c == 2)
.outerjoin(D)
谢谢你的回答。但这种方法仍然意味着我知道模型列的名称所属。我更新了这个问题,使之更具体地说明了我想要实现的目标。非常感谢您的回答。但这种方法仍然意味着我知道模型列的名称所属。我更新了问题,使之更具体地说明了我想要实现的目标。