在SQLAlchemy中查询父级的特定子级

在SQLAlchemy中查询父级的特定子级,sqlalchemy,querying,Sqlalchemy,Querying,我正在尝试编写一个查询,该查询将从父对象返回一个子对象 我的模型如下: class Parent (Base): __tablename__ = 'parents' id = Column(Integer, primary_key=True) name = Column(String) children_id = Column(Integer, ForeignKey('children.id')) childern = relationship('Chil

我正在尝试编写一个查询,该查询将从父对象返回一个子对象

我的模型如下:

class Parent (Base):
    __tablename__ = 'parents'
    id = Column(Integer, primary_key=True)
    name = Column(String)
    children_id = Column(Integer, ForeignKey('children.id'))
    childern = relationship('Child', back_populates='parents')

class Child (Base):
    __tablename__ = 'children'
    id = Column(Integer, primary_key=True)
    name = Column(String)
    parent = relationship('Parent', back_populates='children')
举个例子:有三位家长带着他们的孩子:

Alice: Zander, Ygrite, Xaiver
Bob: Will, Ulric, Tammy
Chris: Will, Sam, Xaiver
请注意,克里斯巧合地给他的一些孩子取了与其他孩子相同的名字,尽管他们是不同的孩子

如果我特别想找到Chris的孩子Xavier,我的第一反应是要么查询父母Chris,然后迭代他的孩子,直到我找到Xavier,要么查询所有名为Xavier的孩子,然后迭代他们,直到我找到父母Chris的孩子


但是,此解决方案不可扩展,而且肯定没有使用SQLAlchemy的功能。

在继续研究此挑战时,我遇到了以下问题和公认的回答:

我测试了这个查询

s.query(Child).join(Parent, Child.parent).filter(Child.name == 'Xavier').filter(Parent.name == 'Chris')
…它正是我想要它做的