如果检查sql,则会注意到没有FROM项pets
,因此ORDER BY persons.id = pets.owner_id
失败。发生这种情况的原因是,关系属性在查询上下文中表示Person.pets
为其ON
子句,或者表示为persons.id = pets.owner_id
。有许多方法可以形成适当的查询,例如使用JOIN
和GROUP BY
:
Person.query.\
outerjoin(Person.pets).\
group_by(Person.id).\
order_by(func.count(Pet.id)).\
all()
的LEFT OUTER JOIN
,没有宠物的人被认为是很好保证。