如何使用 sqlalchemy 关系实现多个连接

Posted

技术标签:

【中文标题】如何使用 sqlalchemy 关系实现多个连接【英文标题】:How to implement multiple joins with sqlalchemy relationships 【发布时间】:2017-04-29 19:38:59 【问题描述】:

我有一个(对你们大多数人来说)关于 sqlAlchemy 和 Python 的简单问题。我有四个具有 1 对 N 关系的表,我想加入这些表。 我用#??????标记了我的问题在我的示例代码中。

有谁知道我可以如何实现“#??????” ?谢谢!

class A(Base):
    __tablename__ = "a"
    id = Column(Integer, primary_key=True)
    allMy_B = relationship("B")
    allMy_C = # ??????
    allMy_D = # ??????

class B(Base):
    __tablename__ = "b"
    id = Column(Integer, primary_key=True)
    my_A_parent = Column(Integer, ForeignKey("a.id"))
    allMy_C = relationship("C")
    allMy_D = # ??????

class C(Base):
    __tablename__ = "c"
    id = Column(Integer, primary_key=True)
    my_B_parent = Column(Integer, ForeignKey("b.id"))
    allMy_D = relationship("D")

class D(Base):
    __tablename__ = "d"
    id = Column(Integer, primary_key=True)
    my_C_parent = Column(Integer, ForeignKey("c.id"))

【问题讨论】:

【参考方案1】:

我有一个部分答案:对于第一个空白,您可以使用secondaryjoi 表:

allMy_C =relationship(C, secondary = B)

但是,对于 d,您需要创建一个连接 B 和 C 的可选择项,我不记得该怎么做。因此,我将此标记为社区 Wiki 问题,其他人可以进行编辑以填写其余部分。

【讨论】:

以上是关于如何使用 sqlalchemy 关系实现多个连接的主要内容,如果未能解决你的问题,请参考以下文章

按 sqlalchemy 中的连接别名排序

在 SQLAlchemy 中,当有多个关系时,如何访问查询中的引用属性?

sqlalchemy:如何通过一个查询连接多个表?

如何在 SQLAlchemy 中加载嵌套关系?

具有多个多对多关系的 SQLAlchemy

SQLAlchemy:表有多个外键约束关系