相关疑难解决方法(0)

SQLAlchemy中的一对一自我关系

我需要创建一个链表的SQLAlchemy版本.它实际上比这更复杂,但它归结为:

我需要在课堂上一对一,自我指涉,双向关系.每个元素可能只有一个父元素,或者根本没有元素,最多只有一个孩子.

我简化了我的课程,所以它看起来像这样:

class Node(declarative_base()):
    __tablename__ = 'nodes'

    id = Column(Integer, Sequence('nodes_id_seq'), primary_key=True, autoincrement=True)
    value = Column(Integer)
    prev_node_id = Column(Integer, ForeignKey('nodes.id'))
    next = relationship('Node', uselist=False, backref=backref('prev', uselist=False))
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试创建一个时,它会引发异常:

>>> Node()
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "<string>", line 2, in __init__
  File "sqlalchemy\orm\instrumentation.py", line 309, in _new_state_if_none
    state = self._state_constructor(instance, self)

[...]

  File "sqlalchemy\orm\properties.py", line 1418, in _generate_backref
    self._add_reverse_property(self.back_populates)
  File "sqlalchemy\orm\properties.py", line 871, in _add_reverse_property
    % (other, self, self.direction))
ArgumentError: Node.next and …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy

5
推荐指数
1
解决办法
3294
查看次数

标签 统计

python ×1

sqlalchemy ×1