gpt4 book ai didi

sqlalchemy 中的多对多自引用关系

转载 作者:行者123 更新时间:2023-12-04 01:08:45 24 4
gpt4 key购买 nike

我正在尝试在 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”。

你知道我该如何补救吗?

最佳答案

你应该只需要:

prev_lines = relationship(
Association,
backref="next_lines",
primaryjoin=id==Association.prev_id)

由于这指定了 next_lines反向引用不需要有 next_lines关系。

您也可以使用 remote_side 执行此操作关系的参数: http://www.sqlalchemy.org/trac/browser/examples/adjacency_list/adjacency_list.py

关于sqlalchemy 中的多对多自引用关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4177235/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com