我想使用sqlalchemy orm为我的数据库中的每个用户获取最近修改过的记录。这是我正在尝试的:
session.query(Object)\
.group_by(Object.user_id)\
.order_by(Object.updated_at.desc())\
.first()
但是收到以下错误:
(psycopg2.ProgrammingError) column "object.id" must appear in the GROUP BY clause or be used in an aggregate function
答案 0 :(得分:1)
此错误的原因是您使用了group_by
而没有聚合函数。
试试这样的事情
from sqlalchemy import func
session.query(Object.user_id, func.max(Object.updated_at)).group_by(Object.user_id).all()
它将返回每个用户的最后updated_at
值。仅当表group_by
中有多个记录与Object
相同时才使用user_id
。