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

3

假设我有这两个对象,它们之间存在一对多的关系:

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个回答

5

经过一番搜索,我发现可以通过以下方式获得所需结果:

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()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接