SQLAlchemy:按多个值筛选单个关系属性

SQLAlchemy:按多个值筛选单个关系属性,sqlalchemy,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集合中同时包含B(“苹果”)、B(“橙色”)和B(“

假设我有两个对象,具有一对多关系:

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集合中同时包含B(“苹果”)、B(“橙色”)和B(“香蕉”)的A


谢谢。

经过一段时间的挖掘,我发现我可以像这样得到想要的结果:

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