Sqlalchemy orm在where子句中使用标签

时间:2017-12-02 15:41:24

标签: python mysql python-3.x orm sqlalchemy

考虑我试图在此处表示一个简单的查询:

SELECT student.name, MAX(grades.final_grade) as max_grade
From grades , students
where student.id == grade.student_id and max_grade == 90

我的问题是关于语法以及如何表示相同的原始SQL查询的问题。

在sqlalchemy orm中,它可能如下所示: StudentGrade将表格表示为orm对象。

query= session.query(Student.name , func.max(Grade.final_grade).join(Grade, Student.id == Grade.student_id).filter(text("max_grade = 90")).all()

但是在这种情况下,我得到了优先权:

{Operationalerror}{_mysql_exceptions.Operationalerror)(1054, "Unknown column 'max_grade' in where clause"

任何想法如何解决这个问题,为什么我的标签不被识别? Text构建用法手册参考为here

编辑:关于原始sql的问题,因为我们觉得有些事情不对。

我原来的sql查询是:

SELECT student.name, MAX(grades.grade) as grade
From grades , students
where student.id = grade.student_id and grade = 90

where条款grade=90中,grade表示grades,表示grades.grade =90,而不是MAX(grades.grade)=90?<登记/> 所以查询有效,因为成绩是指列表而不是select子句中的标签?

谢谢

0 个答案:

没有答案