【发布时间】:2011-05-09 19:11:46
【问题描述】:
我正在尝试在 sqlalchemy 中建立一个自我引用的多对多关系(这意味着 Line 可以有许多父行和许多子行),如下所示:
Base = declarative_base()
class Association(Base):
__tablename__ = 'association'
prev_id = Column(Integer, ForeignKey('line.id'), primary_key=True)
next_id = Column(Integer, ForeignKey('line.id'), primary_key=True)
class Line(Base):
__tablename__ = 'line'
id = Column(Integer, primary_key = True)
text = Column(Text)
condition = Column(Text)
action = Column(Text)
next_lines = relationship(Association, backref="prev_lines")
class Root(Base):
__tablename__ = 'root'
name = Column(String, primary_key = True)
start_line_id = Column(Integer, ForeignKey('line.id'))
start_line = relationship('Line')
但我收到以下错误: sqlalchemy.exc.ArgumentError:无法确定父级/之间的连接条件 关系 Line.next_lines 上的子表。指定一个 'primaryjoin' 表达式 n.如果存在“secondary”,则还需要“secondaryjoin”。
你知道我该如何解决这个问题吗?
【问题讨论】:
-
我试过这个: next_lines = relationship(Association, backref="prev_lines", primaryjoin=id==Association.next_id) prev_lines = relationship(Association, backref="next_lines", primaryjoin=id== Association.prev_id) 现在它不会产生任何错误。这是一个正确的解决方案吗?还是会产生其他问题?
标签: many-to-many sqlalchemy relationship self-reference