Sql 使用连接对象过滤查询
Sql filter query with join objects
所以我有两个表:
Foo:
Foo_no | Bar_no | props1 | props2
(Relationship in the model)
Bar_no = db.Column(db.Integer, db.ForeignKey('bar.Bar_no'))
bar = db.relationship('Bar', foreign_keys=Bar_no)
Bar:
Bar_no | status | props3 | props4
我正在尝试使用 sqlalchemy 进行查询以查找 Foo 中包含 Bar[= 中特定状态的任何行13=]
这是我到目前为止加入的内容
query = Foo.query
if 'status' in filters:
query.join(Bar)
query = query.filter(Foo.bar.status == filters['status'])
return query
我不太确定如何创建查询以从这两个表中筛选出 Foo 具有的正确状态。
有很多方法。简单:
Foo.query.join(Bar).filter_by(Bar.status == filters['status']).all()
更明确:
Foo.query.join(Bar, Foo.bar_no == Bar.bar_no).filter(Bar.status == filters['status']).all()
加入条件:
Foo.query.join(Bar, and_(Foo.bar_no == Bar.bar_no, Bar.status == filters['status'])).all()
通过会话,如果您只需要结果中选定的列列表:
db.session.query(Foo.Foo_no, Foo.props1).join(Bar, Foo.bar_no == Bar.bar_no).filter(Bar.status == filters['status']).all()
当然,还有很多方法,您总能找到适合您需要的方法。
所以我有两个表:
Foo:
Foo_no | Bar_no | props1 | props2
(Relationship in the model)
Bar_no = db.Column(db.Integer, db.ForeignKey('bar.Bar_no'))
bar = db.relationship('Bar', foreign_keys=Bar_no)
Bar:
Bar_no | status | props3 | props4
我正在尝试使用 sqlalchemy 进行查询以查找 Foo 中包含 Bar[= 中特定状态的任何行13=]
这是我到目前为止加入的内容
query = Foo.query
if 'status' in filters:
query.join(Bar)
query = query.filter(Foo.bar.status == filters['status'])
return query
我不太确定如何创建查询以从这两个表中筛选出 Foo 具有的正确状态。
有很多方法。简单:
Foo.query.join(Bar).filter_by(Bar.status == filters['status']).all()
更明确:
Foo.query.join(Bar, Foo.bar_no == Bar.bar_no).filter(Bar.status == filters['status']).all()
加入条件:
Foo.query.join(Bar, and_(Foo.bar_no == Bar.bar_no, Bar.status == filters['status'])).all()
通过会话,如果您只需要结果中选定的列列表:
db.session.query(Foo.Foo_no, Foo.props1).join(Bar, Foo.bar_no == Bar.bar_no).filter(Bar.status == filters['status']).all()
当然,还有很多方法,您总能找到适合您需要的方法。