Как вернуть количество связанных объектов в запросе 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

Ответы на вопрос(1)

Ваш ответ на вопрос