美文网首页
Flask_Sqlalchemy

Flask_Sqlalchemy

作者: 奥特曼255 | 来源:发表于2018-05-30 09:56 被阅读0次

    外键

    例子1

    关系型数据库使用关系把不同表中的行联系起来。

    class Role(db.Model):
       # ...
       users = db.relationship('User', backref='role')
    
    class User(db.Model):
       # ...
       role_id = db.Column(db.Integer, db.ForeignKey('roles.id'))
    

    如图上例所示,关系使用 users 表中的外键连接了两行。添加到 User 模型中的 role_id 列被定义为外键,就是这个外键建立起了关系。传给 db.ForeignKey() 的参数 'roles.id' 表明,这列的值是 roles 表中行的 id 值。
    添加到 Role 模型中的 users 属性代表这个关系的面向对象视角。对于一个 Role 类的实例,其 users 属性将返回与角色相关联的用户组成的列表。db.relationship() 的第一个参数表明这个关系的另一端是哪个模型。如果模型类尚未定义,可使用字符串形式指定。
    db.relationship() 中的 backref 参数向 User 模型中添加一个 role 属性,从而定义反向关系。这一属性可替代 role_id 访问 Role 模型,此时获取的是模型对象,而不是外键的值。

    例子2

    # node.py
    class Node(db.Model, ModelMixin):
        __tablename__ = 'nodes'
        id = db.Column(db.Integer, primary_key=True)
        name = db.Column(db.String())
        # has relationship with topic
        topics = db.relationship('Topic', backref="node")
    
    # topic.py
    class Topic(db.Model, ModelMixin):
        __tablename__ = 'topics'
        id = db.Column(db.Integer, primary_key=True)
        title = db.Column(db.String())
        content = db.Column(db.String())
        #
        node_id = db.Column(db.Integer, db.ForeignKey('nodes.id'))
    

    行级锁

    参考链接:https://stackoverflow.com/questions/40700309/flask-sqlalchemy-with-for-update-row-lock?tdsourcetag=s_pctim_aiomsg

    相关文章

      网友评论

          本文标题:Flask_Sqlalchemy

          本文链接:https://www.haomeiwen.com/subject/umctsftx.html