【问题标题】:Flask SQLAlchemy query from heirarchy来自层次结构的 Flask SQLAlchemy 查询
【发布时间】:2016-12-29 08:50:55
【问题描述】:

我将 Flask 和 SQLAlchemy 与棉花糖一起使用,并试图解决一些问题。如果我有多个在层次结构中使用外键工作的模型(表),我如何正确查询最远的孩子的结果?

例如:

class School(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name =  db.Column(db.String(50))

class Course(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(50))
    school_id = db.Column(db.Integer,db.ForeignKey('school.id'))
    school = db.relationship("School", backref=db.backref("schoola", uselist=False))

class Student(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(60))
    course_id = db.Column(db.Integer, db.ForeignKey('course.id'))
    course = db.relationship("Course", backref=db.backref("coursea", uselist=False))

我在 Marshmallow 中为每个都有 Schemas。我在这里寻找的是如何检索特定学校学生的所有学生信息(使用 SQLAlchemy)。稍后我会将这些序列化为 JSON。

【问题讨论】:

  • 附注:坦率地说,我认为你不需要 both course_idcourse,或 school_idschool;成对的后者就足够了。
  • 是的,我已经在示例中看到了这一点,并假设 backref 是必要的。

标签: python flask sqlalchemy marshmallow


【解决方案1】:

我对 Marshmallow 不熟悉,但我想你可以做类似的事情:

School.query.\
         join(Course).\
         join(Course.schoola).\
         filter(School.name == 'School Name').all()

Student.query \
            .join(Course) \
            .join(School) \
            .filter(School.name == 'School Name')

【讨论】:

    猜你喜欢
    • 2019-05-02
    • 2020-04-17
    • 2015-10-15
    • 1970-01-01
    • 1970-01-01
    • 2016-01-06
    • 2012-08-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多