sqlalchemy中复合外键的多个关系

时间:2017-12-17 11:14:13

标签: python orm sqlalchemy relationship

我正在尝试创建一个边缘类型类来链接两个节点。每个节点本身都是一个类,节点和边缘都应该是同一个图的一部分。我一直在

@if (!empty(Auth::user()))

即使定义了外键。我尝试在节点表Could not determine join condition between parent/child tables on relationship TypeiNode.edges - there are no foreign keys linking these tables. 关系上定义外键,但得到了相同的结果。有人能告诉我这个例子有什么问题。

edges

1 个答案:

答案 0 :(得分:0)

如果您仔细阅读错误,您会注意到它并没有抱怨您添加了foreign_keys参数的关系,而是您没有注意到的关系:

Could not ... on relationship **TypeiNode.edges** ...

我拿

  

我尝试在节点表边缘关系上定义外键,但结果相同。

表示您没有尝试同时定义两端。所以解决方案是在两端定义外键:

class Type1Node(Base):
    __tablename__ = 'type_1_node'

    id = Column(Integer, primary_key=True)
    graph_id = Column(Integer, ForeignKey('graph.id'))
    graph = relationship('Graph')
    edges = relationship('Edge', back_populates='type_1_node',
                         foreign_keys=[Edge.type_1_node_id, Edge.graph_id])