如何从带有连接的SQLAlchemy查询中获得可靠的计数?

2024-03-28 14:24:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用SQLAlchemy和PostgreSQL。我的一些查询涉及连接相关表和基于连接表中的值进行过滤。有时,这些连接和过滤器可以是多个关系。我的问题是,在使用limit时,我没有找到一种方法来获得可靠数量的结果。我知道limit影响的是行计数,而不是查询返回的顶级模型对象的计数。有什么技巧可以绕过这个问题吗?你知道吗

下面是一个简单的(可能是不好的)例子。设想一个数据库,其中包含表和CompanyDepartmentEmployee的相应SQLAlchemy模型类。显然,一个公司可以有很多部门,一个部门可以有很多员工。我可以试着让20家公司的员工都这样称呼鲍勃:

query = Company.query
query = query.join(Department)
query = query.join(Employee)
query.filter(Employee.name == "Bob")
query.limit(20)
result = query.all()

假设有许多银行机构存在,这个查询将不会产生20家公司。在以这种方式加入和过滤时,是否有方法构造这样一个查询以返回特定的公司计数?你知道吗


Tags: 方法模型过滤器sqlalchemypostgresql员工employee公司