sqlalchemy以新名称加入\u name filter new_名称.列==值

2024-04-29 02:52:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在寻找一种在筛选器中引用联接表的方法。我的问题是:

session.query(A).outerjoin(B, C, D).filter(B.column_b == 1, C.column_c == 2)

如果不命名model B和model C,如何进行这种过滤?你知道吗

session.query(A).outerjoin(B, C, D).filter_by(column_b=1, column_c=2)

不起作用,因为filter\u by尝试在D中查找'column\u b'和'column\u c'。aliased()和alias()也不起作用。
我以{"column_a": 0, "column_b": 1, "column_c": 2}的形式接收字段\u到\u值的dict,我需要用它创建一个查询。当然,我可以有一个像{"column_a": A.column_b, "column_b": B.column_b, "column_c": C.column_c}这样的映射。但应该有更好的办法。你知道吗

有没有什么好办法来做这样的过滤?你知道吗


Tags: 方法bymodelsessioncolumnaliasfilterquery
1条回答
网友
1楼 · 发布于 2024-04-29 02:52:12

在最后一个连接上应用filter\u,这样你就可以打断你的外连接了。尝试:

session.query(A).outerjoin(B).filter_by(column_b == 1)
                .outerjoin(C).filter_by(column_c == 2)
                .outerjoin(D)

相关问题 更多 >