相关疑难解决方法(0)

SQLAlchemy通过Association对象声明多对多自联接

我有一个表用户和一个表朋友将用户映射到其他用户,因为每个用户可以有很多朋友.这种关系显然是对称的:如果用户A是用户B的朋友,那么用户B也是用户A的朋友,我只存储一次这种关系.除了两个用户ID之外,Friends表还有其他字段,因此我必须使用关联对象.

我试图在Users类中声明这种关系(扩展声明基础),但我似乎无法弄清楚如何做到这一点.我希望能够通过房产朋友访问给定用户的所有朋友,所以说朋友= bob.friends.

这个问题的最佳方法是什么?我试着在这里发布许多不同的设置,但是由于各种原因它们都没有工作.

编辑:我的最新尝试看起来像这样:

class User(Base):
    __tablename__ = 'users'
    id = Column(Integer, primary_key=True)

    # Relationships
    friends1 = relationship('Friends', primaryjoin=lambda: id==Friends.friend1ID)
    friends2 = relationship('Friends', primaryjoin=lambda: id==Friends.friend2ID)


class Friends(Base):
    __tablename__ = 'friends'
    id = Column(Integer, primary_key=True)
    friend1ID = Column(Integer, ForeignKey('users.id') )
    friend2ID = Column(Integer, ForeignKey('users.id') )
    status = Column(Integer)

    # Relationships
    vriend1 = relationship('Student', primaryjoin=student2ID==Student.id)
    vriend2 = relationship('Student', primaryjoin=student1ID==Student.id)
Run Code Online (Sandbox Code Playgroud)

但是会导致以下错误:

InvalidRequestError: Table 'users' is already defined for this MetaData instance.  Specify 'extend_existing=True' to redefine options and columns on an existing Table …
Run Code Online (Sandbox Code Playgroud)

python many-to-many sqlalchemy declarative relationship

10
推荐指数
1
解决办法
1万
查看次数

自引用关联关系SQLalchemy

在我与烧瓶SQLAlchemy的烧瓶应用程序,我需要创建两个接触这里之间的关联是我的Contact模型

class Contact(db.Model):
    __tablename__ = 'contact'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.Unicode(120), nullable=False, unique=False)
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'))

    to_contacts = db.relationship('Contact',
                                  secondary='ContactRelation',
                                  primaryjoin='id==contactrelation.c.from_contact_id',
                                  secondaryjoin='id==contactrelation.c.to_contact_id',
                                  backref='from_contacts')
Run Code Online (Sandbox Code Playgroud)

和我的社团班级ContactRelation

class ContactRelation(db.Model):
    __tablename__ = 'contactrelation'
    id = db.Column(db.Integer, primary_key=True)
    from_contact_id = db.Column(db.Integer, db.ForeignKey('contact.id'))
    to_contact_id = db.Column(db.Integer, db.ForeignKey('contact.id'))
    relation_type = db.Column(db.String(100), nullable=True)
Run Code Online (Sandbox Code Playgroud)

我有错误:

AttributeError: type object 'ContactRelation' has no attribute 'c'
Run Code Online (Sandbox Code Playgroud)

sqlalchemy flask flask-sqlalchemy

3
推荐指数
1
解决办法
1050
查看次数