在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')
…它正是我想要它做的