Python SQLAlchemy:使用标签进一步筛选查询

Python SQLAlchemy:使用标签进一步筛选查询,python,sqlalchemy,Python,Sqlalchemy,我有一个查询,它生成一个id,后跟一个计数。我只想获取计数为N的行。我尝试了下面的代码,但得到了“错误:列“cert\u count”不存在”。我猜我用错标签了 cust_cert_counts = db.session.query( CustomerCertAssociation.customer_id, func.count(CustomerCertAssociation.certification_id).label('cert_count')).filter( C

我有一个查询,它生成一个id,后跟一个计数。我只想获取计数为N的行。我尝试了下面的代码,但得到了“错误:列“cert\u count”不存在”。我猜我用错标签了

cust_cert_counts = db.session.query(
    CustomerCertAssociation.customer_id,
    func.count(CustomerCertAssociation.certification_id).label('cert_count')).filter(
    CustomerCertAssociation.certification_id.in_(cert_ids)).group_by(
    CustomerCertAssociation.customer_id)
cust_cert_counts.filter('cert_count=2').all()

您不能像这样对别名列进行筛选:

SELECT 1 AS foo WHERE foo = 1;
您必须将其嵌套在子查询中:

SELECT * FROM (SELECT 1 AS foo) bar WHERE bar.foo = 1;
对于您的特定示例,您必须执行以下操作:

subq = cust_cert_counts.subquery()
db.session.query(subq).filter(subq.c.cert_count == 2)