Sqlalchemy:过滤关系中应该有多少个实例

Sqlalchemy: Filter how many instances there should be in a relationship

如果您想按关系之一的长度(关系中存在的行数)过滤 table,您会怎么做? 我希望过滤语句的功能如下:

Table.query.filter(Table.relationship.length == relationship_length)

这是一个应用示例:

Family.query.filter(Family.children.length == amount_of_children)

正如 Tim Roberts 所说,简单 SQL 的方法是:

GROUP BY familyid HAVING count(*) > length

如果sqlalchemy中没有这方面的功能,那怎么办呢?

正如 Tim Roberts 所说,简单 SQL 的方法是:

GROUP BY tableid HAVING count(*) > length

在 sqlalchemy 中,可以这样写:

from sqlalchemy import func
Table.query.join(Table.relationship).group_by(Table.id).having(func.count() == relationship_length)

例如,搜索具有特定数量 children 的家庭:

from sqlalchemy import func
Family.query.join(Family.children).group_by(Family.id).having(func.count()==amount_of_children)