所以我有两张桌子:
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 中包含栏
中特定状态的所有行这是我到目前为止加入它的原因
query = Foo.query
if 'status' in filters:
query.join(Bar)
query = query.filter(Foo.bar.status == filters['status'])
return query
我不太确定如何创建查询以从这两个表中过滤以过滤出Foo具有的正确状态。
答案 0 :(得分:0)
有很多方法。简单:
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()
Ofc,有更多的方法,你总能找到适合你的需求。