在我的数据库中,我有三个表:
class Element(Base):
id_ = Column(Integer, primary_key=True);
nodes = relationship('Node', secondary='element_node',
back_populates='elements',
order_by='ElementNode.node_position')
.
.
class Node(Base):
id_ = Column(Integer, primary_key=True)
.
.
class ElementNode(Base):
node_id =
Column(Integer,ForeignKey('node.id_'),primary_key=True);
element_id = Column(Integer, ForeignKey('element.id_'),
primary_key=True)
node_position = Column(Integer, primary_key=True)
.
.
ElementNode表有一些如下所示的条目:
| 节点ID|元素ID|节点位置|
| - -----|- -----|- -----|
| 1|一百|1|
| 2|一百|2|
| 3|一百|3|
| 3|一百|4|
| 3|一百|5个|
当我查询这个元素对象并使用element.nodes时,我只得到节点1,2,3但是当我调用element.nodes时,我也需要重复的元素,因为它们有不同的节点位置。
我试着添加一个新的关系,但我不能找出正确的方法来做。
1条答案
按热度按时间atmip9wb1#
我认为你需要让ElementNode成为一个成熟的类,而不是使用secondary。该模式称为关联对象:https://docs.sqlalchemy.org/en/20/orm/basic_relationships.html#association-object