对于一项作业,我正在处理一组涉及学区的postgreSQL数据库。我正在尝试填充新字段student_gpas
,该字段是存储唯一学生gpa的数组。我已经在python中使用sqlalchemy使用以下代码完成了此操作:
schools = db.session.query(School).filter(school.is_selected == true).all()
For sch in schools:
grades = db.session.query(Grade).filter(grade.school_id == sch.id).all()
For gr in grades:
classes = db.session.query(Class).filter(class.grade_id == grades.id).all()
For cl in classes:
students = db.session.query(Student).filter(student.class_id == cl.id).all()
For st in students:
If st.gpa not in gr.student_gpas:
gr.student_gpas.append(st.gpa)
如果我想使用此代码段并将其转换为一个长而难以置信的复杂SQL语句,它将是什么样子
答案 0 :(得分:0)
要查看正在生成的内容,只需使用echo = True标志创建引擎。
我从sqlalchemy网站上获取了以下内容[1]:
from sqlalchemy import create_engine
engine = create_engine('sqlite:///:memory:', echo=True)
echo标志是设置SQLAlchemy日志记录的快捷方式,这是通过Python的标准日志记录模块完成的。启用它,我们将看到所有生成的SQL。
[1] https://docs.sqlalchemy.org/en/latest/orm/tutorial.html#connecting