Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python sqlalchemy作为新名称联接过滤器新名称.column==值_Python_Sqlalchemy - Fatal编程技术网

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)

谢谢你的回答。但这种方法仍然意味着我知道模型列的名称所属。我更新了这个问题,使之更具体地说明了我想要实现的目标。非常感谢您的回答。但这种方法仍然意味着我知道模型列的名称所属。我更新了问题,使之更具体地说明了我想要实现的目标。