sqlalchemy 中的关系

Relation in sqlalchemy

我使用 sqlalchemy ORM 和 pydantic
我有以下简单的 table

class Parent(Base):
    __tablename__ = 'parents'
    id = Column(Integer, primary_key=True, nullable=False)
    children = relationship(
        "Child",
        backref="parent",
        uselist=True
    )

class Child(Base):
    __tablename__ = 'children'
    id = Column(Integer, primary_key=True, nullable=False)
    parent.id = Column(Integer, ForeignKey(Parent.id))
    age = Column(Integer)

得到 parents 和他们的 children 很容易
但是我怎样才能用年龄过滤 child?
如果你得到下面的,然后用pydantic序列化,所有children都会被嵌套

parents = db.query(Parent).all()

您需要在 parent table 和 child table 之间进行连接,以便对 child.

parents = db.query(Parent).join(Child, Child.parent.id == Parent.id).filter(Child.age < 18).all()