如何从ref属性加入SQLAlchemy

时间:2016-11-24 15:40:21

标签: python sqlalchemy flask-sqlalchemy

标题很混乱,我的不好,但我会解释我的问题。

我有3张桌子:

  • ENTITY1
  • ENTITY2
  • ENTITY3

提取Entity1的代码

class Entity1(db.Model):
    ...

    entity2 = db.relationship('Entity2', lazy='joined')

提取Entity2的代码

class Entity2(db.Model):
    ...

    entity3 = db.relationship('Entity3', lazy='joined')

我想从Entity1.entity2到Entity3表进行连接,并在entity3属性上添加一个WHERE子句。

我试过了:

query = Entity1.query    
query = query.join(Entity1.entity2.entity3).filter(entity2.entity3.has(code=input))

和多种变体......

1 个答案:

答案 0 :(得分:0)

下面应该有效(版本1或版本2过滤器):

query = (
    Entity1.query
    .join(Entity2, Entity1.entity2)
    .filter(Entity2.entity3.has(Entity3.code == input))  # version-1
    # .join(Entity3, Entity2.entity3).filter(Entity3.code == input)  # version-2
)