如何映射第二个表所代表的一个表和第三个表之间的关系?

时间:2011-12-05 12:29:25

标签: python sqlalchemy

让我们有3个表A,B,C以及它们之间的关系。

A与B有多对一

B是一对多的C

如何在sqlalchemy中编写关系以便从A访问C,例如:A.C [0] .some_column

1 个答案:

答案 0 :(得分:3)

在你的例子中

A与B有多对一

B是一对多的C

最后

如果您想从A访问C,则A是多对多C是最后一个关系。

您必须在每个模型中创建relationship才能直接访问。

例如

A.x is relationship with B
B.y is relationship with C

然后您可以通过A.x.y访问,它将返回列表。

要像A.x那样访问,您可以使用secondaryjoin来提供查询,该查询将直接从A访问C.

例如

Class A:

    p = relationship(C,
             primaryjoin=A.x==B.y,
             secondaryjoin=B.y==C.z
             )

这可能适合你。