在flask-sqlalchemy

时间:2018-10-24 16:36:06

标签: python sqlalchemy

我已经使用“ flask-sqlalchemy”创建了一个数据库。

有两个表:“大学”和“两场制”

一所大学可以有多个领域,因此在这里我们是一对多的关系。 因此,当我们查询大学时,它还会为大学表的每一行返回一个字段列表。代码如下:

class University(db.Model):
    name = db.Column(db.String(120), index=True, unique=True, primary_key=True)
    country = db.Column(db.String(128))
    fields = db.relationship('Field', lazy='dynamic')
    ...
    ...

class Field(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    study = db.Column(db.String(256), nullable=False)
    grade = db.Column(db.String(256))
    university_name = db.Column(db.String(256), db.ForeignKey('university.name'))

我的问题是:我想同时查询大学及其关系,以便结果将是一个大学对象,其中只包含一个特定的Field对象(而不是所有Field的列表)与那个大学对象有关),因此在我过滤了大学之后,我要过滤(查询)它的关系

我有3个用于查询的参数,一个是在大学里,另外两个是关于它的关系:

country_param = 'usa'
grade_param = 'master'
study_param = 'electronics'

我正在苦苦挣扎着阅读sqlalchemy文档,flask-sqlalchemy文档两天,并且我已经在堆栈溢出中阅读并尝试了许多类似的问题,但没有任何效果。

加上许多不同的组合,例如

existing = University.query.join(University.fields).filter(University.country == 'usa',
                                                           Field.grade == 'phd').first()

    a = Field.query.with_parent(u).filter(Field.grade == 'master').all()

我已经尝试过,但是没有用。

-感谢您阅读我的问题并为我提供帮助

0 个答案:

没有答案