簡體   English   中英

sqlalchemy join as new_name filter new_name.column == value

[英]sqlalchemy join as new_name filter new_name.column == value

我正在尋找一種方法來引用過濾器中的連接表。 我的查詢是:

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. aliased()中找到'column_b'和'column_c'而alias()也不起作用。
我以{"column_a": 0, "column_b": 1, "column_c": 2}的形式收到field_to_value的dict。我需要創建一個查詢。 當然,我可以有一個像{"column_a": A.column_b, "column_b": B.column_b, "column_c": C.column_c} 但應該有更好的方法。

有沒有什么好方法可以做這樣的過濾?

filter_by適用於最后一個連接,因此您應該能夠破壞您的外連接。 嘗試:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM