Flask_Sqlalchemy

外键

例子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)