subq = Session.query(Bid.project_id, func.count(Bid.id).label("count")).group_by(Bid.project_id).subquery()
projects = Session.query(Project, func.coalesce(subq.c.count, 0)).outerjoin(subq, subq.c.project_id == Project.id)
Это вариант без relationship'ов. Как с ними - хз, ибо не юзаю.
P. S. Пардон, не в курсе как теги в мобильной версиии проставить :(