簡體   English   中英

再次 SQLAlchemy 過濾查詢

[英]SQLAlchemy filter query again

我想計算每個類別中用戶的建築物數量。

我有一個非常像這樣的查詢:

q = session.query(buildings, category_buildings)\
           .join(category_buildings, category_buildings.id == buildings.category)\
           .filter(buildings.builder_id == user_id)

for cid in range(1, category_count):
    q.filter(category_buildings.id == cid)
    buildings_for_cid = q.all()

for 循環內的 q.filter() 沒有給我想要的結果,因為它根本不按類別 id 過濾。 我該怎么辦?

在普通 SQL 中:(AND C.id = INT 將發生在 for 循環中)

SELECT * FROM buildings B
JOIN category_buildings C ON B.category = C.id
WHERE builder_id = 1
AND C.id = 1

當您運行q.all()你基本上只是在運行第一行查詢,用.all()就完了,因為你應用了第二過濾器沒有被存儲為q。

所以基本上你這樣做了:

q = 'abc'
for cid in range(1, 10):
   q.upper()
   print(q)

你期望q'ABC'但它實際上從未被修改過。 我認為你真正想做的是:

q = session.query(buildings, category_buildings) \
    .join(category_buildings, category_buildings.id == buildings.category) \
    .filter(buildings.builder_id == user_id)

for cid in range(1, category_count):
    branched = q.filter(category_buildings.id == cid)
    buildings_for_cid = branched.all()

暫無
暫無

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

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