10
我是sqlalchemy的新手,儘管文檔看起來相當透徹,但我找不到完全符合我需要的方式。如何返回sqlalchemy查詢中相關實體的數量
說我有兩個表:論壇和帖子。每個論壇都有一個父母論壇和任意數量的帖子。我要的是:
- 的頂級論壇列表
- 熱切加載的子論壇,訪問過的頂級論壇
- 每個孩子的帖子的計數論壇
所以我開始:
query(Forum).filter(Forum.parent==None).all()
這給了我所有的頂級論壇。當然訪問子論壇產生n個選擇查詢。
query(Forum).options(eagerload('children')).filter(Forum.parent==None).all()
這解決了n選擇問題。現在
我最好的猜測是這樣的:
query(Forum, func.count(Forum.children.posts)).options(eagerload('children')).filter(Forum.parent==None).group_by(Forum.children.id).all()
但我得到的是:
AttributeError: Neither 'InstrumentedAttribute' object nor 'Comparator' object has an attribute 'posts'
我已經嘗試了一些變化,但沒有得到任何進一步。只是爲了清楚起見,我在尋找這個SQL相當於:
select Forum.*, Child.*, count(Post.id)
from Forum
left join Forum Child on Child.parent = Forum.id
left join Message on Message.forum = Child.id
where Forum.parent is null
group by Child.id