【问题标题】:Translating python sqlalchemy queries into SQL将 python sqlalchemy 查询转换为 SQL
【发布时间】:2019-03-20 10:55:44
【问题描述】:

对于一项任务,我正在使用一组涉及学区的 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)

如果我想把这段代码 sn-p 转换成一个长而复杂的 SQL 语句会是什么样子

【问题讨论】:

  • 这不会是一个非常复杂的 sql 查询,只是一个涉及 4 个表、连接和 where 子句的沼泽标准查询,加上一些稍微复杂的工作来将值连接到一个分隔列表中。请发布这些数据和一些示例数据的数据库架构。

标签: python sql database postgresql sqlalchemy


【解决方案1】:

要查看生成的内容,只需使用 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

【讨论】:

    猜你喜欢
    • 2017-04-25
    • 2015-01-31
    • 2017-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-28
    • 1970-01-01
    相关资源
    最近更新 更多