mik*_*ike 12 many-to-many sqlalchemy relationship self-reference
我试图在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')
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误:sqlalchemy.exc.ArgumentError:无法确定关系Line.next_lines上的父/子表之间的连接条件.指定'primaryjoin'表达式.如果存在'secondary',则还需要'secondaryjoin'.
你知道我怎么能解决这个问题吗?
你应该只需要:
prev_lines = relationship(
Association,
backref="next_lines",
primaryjoin=id==Association.prev_id)
Run Code Online (Sandbox Code Playgroud)
由于这指定了next_lines后向引用,因此不需要有next_lines关系.
您也可以使用remote_side关系参数来执行此操作:http://www.sqlalchemy.org/trac/browser/examples/adjacency_list/adjacency_list.py
| 归档时间: |
|
| 查看次数: |
3181 次 |
| 最近记录: |