SqlAlchemy:如何在用户之间建立联系,即结交“朋友”
||
我正在尝试使用SqlAlchemy在Pylons中创建Sqlite数据库表。我使用声明性基础通过以下代码一次创建表,类和映射器:
class Friends(Base):
__tablename__ = \'friends\'
left_id = Column(Integer, ForeignKey(\'facebooks.id\'), primary_key=True)
right_id = Column(Integer, ForeignKey(\'facebooks.id\'), primary_key=True)
def __repr__(self):
return \"<Friend(id:\'%s\' id: \'%s\')>\" % (self.left_id, self.right_id)
class Facebook(Base):
__tablename__ = \'facebooks\'
id = Column(Integer, primary_key=True)
friends = relationship(\"Facebook\",
secondary=Friends.__tablename__,
primaryjoin= id == Friends.right_id,
secondaryjoin= Friends.left_id == id)
def __init__(self, id):
self.id = id
def __repr__(self):
return \"<User(id:\'%s\')>\" % (self.id)
我只是在学习所有不同的关系,例如多对一,一对多,一对一以及多对多,以及如何使用表和/或分别实现这些关系。我想知道如何将对象与其自身关联?例如,我想将Facebook与其他Facebook相关联。换句话说,建立它们之间的连接,并将它们建立为“朋友”。我将如何构建数据库以使其成为可能?
编辑:我更改了上面更新的代码,并添加了一个名为\“ Friends \”的关联对象,但是当我向Facebook对象添加朋友时,它仅在一个方向上起作用。如果我将Bob添加为John的朋友,则可以在John.Friends中看到Bob,但是在Bob.Friends中看不到John。我究竟做错了什么?我尝试在Friends类中添加以下关系:
friend = relationship(\"Facebook\", backref=\"friends\")
但我得到一个错误:
sqlalchemy.exc.ArgumentError:可以
无法确定之间的连接条件
父/子关系表
老友记指定一个
\'primaryjoin \'表达式。如果
\'secondary \'存在,
也需要使用“ secondaryjoin \”。
没有找到相关结果
已邀请:
1 个回复
田眯衅