【问题标题】:Stuck with Flask-Sqlalchemy Relationship system卡在 Flask-Sqlalchemy 关系系统中
【发布时间】:2021-06-18 09:39:50
【问题描述】:

我想创建包含用户信息(sqlite db)的数据库

class User(db.Model, UserMixin):
    id = db.Column(db.Integer, primary_key=True)
    login = db.Column(db.String(10), unique = True)
    email = db.Column(db.String(20), unique = True)
    psw = db.Column(db.String(500), nullable=True)
    def __repr__(self):
        return f"<User {self.id}>"

这是我已经做过的。 我想创建字段 next_friends、incoming_friends、friends,我认为我需要创建一个扩展 user 的新类,但我没有找到文档,也不知道该怎么做。

【问题讨论】:

    标签: python sqlalchemy


    【解决方案1】:

    User 表存储您需要的有关特定用户的信息。如果您想找出这个user 在您的应用程序中可能有哪些朋友,那么您可以创建另一个名为Friends 的表。

    class Friend(db.Model, UserMixin):
        id = db.Column(db.Integer, primary_key=True)
        upcoming_friends = db.Column(db.String(64), unique = True)
        incoming_friends = db.Column(db.String(64), unique = True)
        user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    
        def __repr__(self):
            return f"<Friends: {self.id}>"
    

    要在这两个数据库结构之间建立关系,我们将执行以下操作:

    class User(db.Model, UserMixin):
        id = db.Column(db.Integer, primary_key=True)
        login = db.Column(db.String(10), unique = True)
        email = db.Column(db.String(20), unique = True)
        friends = db.relationship('Friend', backref='<give-a-reference>', lazy='dynamic')
    
        def __repr__(self):
            return f"<User {self.id}>"
    

    user_id 字段被初始化为user.id 的外键,这意味着它引用了user 表中的id 值。在此参考中,user 部分是模型的数据库表的名称。

    在引用db.ForeignKey 中的user 表时存在一些不一致之处。在这里,您可以看到user 表以小写字母开头,而在db.relationship 中引用Friend 表时,我们以大写字母开头。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-24
      • 1970-01-01
      • 2023-03-16
      • 2020-04-15
      • 1970-01-01
      • 2016-06-15
      相关资源
      最近更新 更多