解密Peewee ORM Postgres查询错误
我在烧瓶项目中使用Peewee。我有一个ORM查询,它在SQLite中工作,但现在在迁移到Postgres时导致了一个错误。我想知道是否有人能帮我诊断:解密Peewee ORM Postgres查询错误,orm,flask,peewee,Orm,Flask,Peewee,我在烧瓶项目中使用Peewee。我有一个ORM查询,它在SQLite中工作,但现在在迁移到Postgres时导致了一个错误。我想知道是否有人能帮我诊断: stats = ( Assignment.select( Type.name, fn.COUNT(Type.id).alias('total'), Assignment.select( fn.COUNT(Assignment.id) ).where(
stats = (
Assignment.select(
Type.name,
fn.COUNT(Type.id).alias('total'),
Assignment.select(
fn.COUNT(Assignment.id)
).where(
(Assignment.due_date < fn.Now()) & (StudentCourses.student == self) & (Assignment.type == Type.id)
).group_by(Assignment.type, StudentCourses.student).alias('completed')
)
.naive().join(Type)
.join(StudentCourses, on=(StudentCourses.course == Assignment.course))
.where(StudentCourses.student == self)
.order_by(Type.id)
.group_by(Type.name, StudentCourses.student)
)
我已经尝试将指定的列添加到group_by子句中,但我没有得到任何支持。有人对此有任何指导吗?您希望有一双新眼睛。您的子查询有效地连接到外部查询的
Type
表,因此postgres说您需要在COUNT子查询中按Type.id分组
SELECT "t2"."name",
COUNT("t2"."id") AS total,
(SELECT COUNT("t4"."id")
FROM "assignment" AS t4
WHERE ((("t4"."due_date" < Now())
AND ("t3"."student_id" = 2))
AND ("t4"."type_id" = "t2"."id"))
GROUP BY "t4"."type_id",
"t3"."student_id") AS completed
FROM "assignment" AS t1
INNER JOIN "type" AS t2 ON ("t1"."type_id" = "t2"."id")
INNER JOIN "studentcourses" AS t3 ON ("t3"."course_id" = "t1"."course_id")
WHERE ("t3"."student_id" = 2)
GROUP BY "t2"."name",
"t3"."student_id"
ORDER BY "t2"."id"
ProgrammingError: subquery uses ungrouped column "t2.id" from outer query
LINE 1: ...ND ("t3"."student_id" = 2)) AND ("t4"."type_id" = "t2"."id")...