如何在sqlalChemical中生成子查询

2022-02-22 00:00:00 python sqlalchemy

问题描述

SELECT *
FROM Residents
WHERE apartment_id IN (SELECT ID
                       FROM Apartments
                       WHERE postcode = 2000)

我正在使用sqlalChemy并尝试执行上面的查询。我一直无法使用db.engine.execute(sql)将其作为原始SQL执行,因为它抱怨我的关系不存在.但是我使用以下格式成功地查询了我的数据库:session.Query(Residents).filter_by(???)。 不过,我想不出如何使用此格式构建我想要的查询。


解决方案

可以使用subquery方法创建子查询

subquery = session.query(Apartments.id).filter(Apartments.postcode==2000).subquery()
query = session.query(Residents).filter(Residents.apartment_id.in_(subquery))

相关文章