SQLAlchemy:按多个值过滤单个关系属性

时间:2012-10-11 20:43:24

标签: sqlalchemy

假设我拥有这两个具有一对多关系的对象:

class A(Base):
    ...
    collection = relationship("B")

class B(Base):
    ...
    a_id = Column(Integer, ForeignKey('table_for_a.id'), nullable=False)
    key = Column(String(50), nullable=False)

如何同时查询A.collection中有B(“apple”),B(“orange”)和B(“banana”)的A?

感谢。

1 个答案:

答案 0 :(得分:2)

经过一段时间的挖掘,我发现我可以得到所需的结果:

from sqlalchemy import and_

...
session.query(A).filter(
    and_(
        A.collection.any(key="apple"),
        A.collection.any(key="orange"),
        A.collection.any(key="banana")
    )
).all()