sqlalchemy:另一列中每个值的最大值

时间:2019-11-20 16:06:34

标签: python postgresql sqlalchemy

我正在尝试在sqlalchemy中复制此(PostgreSQL)SQL:

SELECT MAX(building.id) FROM building JOIN owner ON building.owner_id = owner.id WHERE owner.name IN ('rita', 'sue', 'bob') GROUP BY version.name;

这将找到每个指定所有者拥有的一栋建筑物(最近的建筑物)(注意:为保护无辜者而进行了更改的数据:我保证,为什么我要在真实环境下这样做)。 / p>

我有点sqlalchemy n00b,我不知道如何在sqlalchemy中做到这一点。这是我目前所拥有的:

subquery = db.query(func.max(model.Building.id))
subquery = subquery.filter(model.Building.owner.has(model.Owner.name.in_(names)))
subquery = subquery.group_by(model.Owner.name)
print(subquery.all())

它报告:

ProgrammingError: (psycopg2.errors.UndefinedTable) missing FROM-clause entry for table "owner"

我在这里想念什么?

1 个答案:

答案 0 :(得分:0)

知道了!我错过了相当于加入。这段代码有效:

subquery = db.query(func.max(model.Building.id))
subquery = subquery.filter(model.Building.owner_id==model.Owner.id)
subquery = subquery.filter(model.Building.owner.has(model.Owner.name.in_(names)))
subquery = subquery.group_by(model.Owner.name)
print(subquery.all())