我正在创建一个使用 camelot(使用 sqlalchemy ORM)保存成员列表的程序。会有人相互结婚,这意味着同一张桌子内的一对一关系。这是 Person 类的简化版本:
class Person( Entity ):
id = Column(Integer, primary_key=True)
firstname = Column( Unicode(30), nullable = False )
lastname = Column( Unicode(30), nullable = False )
member_no = Column( Integer )
marital_status = Column( Unicode(15) )
marriage_date = Column( Date() )
married_to = ... # Should be one to one with self
我试过这样做:
married_to = relationship("Person", uselist=False, backref="persons")
married_to_id = Column(Integer, ForeignKey('persons.id'))
但它失败了:
InvalidRequestError:一个或多个映射器无法初始化 - 无法继续初始化其他映射器。最初的例外是: Person.married_to 和反向引用 Person.persons 都是同一个方向。您的意思是在多对一上设置 remote_side 吗?
我怎么能加入同一张桌子,或者这是我使用的错误方法。如果我将人 A 与 B 结合,是否可以这样做,然后人 B 会自动与 A 结合(作为婚姻工作 - 双向......)
我希望我清楚自己。:-/