たとえば、リレーショナルデータベースに二重リンクリストのようなものがある場合はどうなりますか。
node_id left_id right_id
1 null 2
2 1 3
3 2 null
次に、次のようなSQLAlchemyコードがあります。
class NodeClass(Base):
__tablename__ = 'nodes_table'
node_id = Column(Integer, primary_key=True)
left_id = Column(Integer, ForeignKey('nodes_table.node_id'))
right_id = Column(Integer, ForeignKey('nodes_table.node_id'))
left = relationship('NodeClass') # Wrong
right = relationship('NodeClass') # Wrong
node_id 2があり、呼び出した場合NodeClass.left
、その代わりにnode_id1を受け取りたいと思います。このように動作するようにSQLAlchemyリレーションシップを構成するにはどうすればよいですか?
アップデート:
2番目の例を示します。人のテーブルを考えてみましょう。各人には母親と父親がいます。
person_id mother_id father_id
1 null null
2 null null
3 1 2
SQLAlchemyコード:
class PersonClass(Base):
__tablename__ = 'persons_table'
person_id = Column(Integer, primary_key=True)
mother_id = Column(Integer, ForeignKey('persons_table.person_id'))
father_id = Column(Integer, ForeignKey('persons_table.person_id'))
mother = relation('PersonClass') # Wrong
father = relation('PersonClass') # Wrong