2
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))
을하지만, 내가 하나를 만들려고 할 때, 그것은 예외가 발생합니다 :
>>> 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 back-reference Node.prev are both of the same direction <symbol 'ONETOMANY>. Did you mean to set remote_side on the many-to-one side ?
나는 여기에 놓치고 무엇을 그것은 다음과 같습니다 있도록
나는 내 수업을 단순화? Google 검색을 통해 절대적으로 아무데도 찾아 볼 수 없습니다./
Node 클래스에 ID 테이블이 정의되어 있지 않지만 수퍼 클래스에 내 ID 테이블이 정의되어 있지 않은 경우 remote_side를 어떻게 설정합니까? – user1111652
@ user1111652 Node.prev = relationship (..... remote_side = [Node.id] .....)와 같은 클래스 다음에 선언 할 수 있습니다 –
또는 인용 된 표현식을 사용하여 나중에로드 할 수 있습니다 (" Node.id "대신 Node.id) –