# -*- coding: utf-8 -*- from flask import Flask from flask_script import Manager from flask_sqlalchemy import SQLAlchemy from flask_migrate import MigrateCommand, Migrate app = Flask(__name__) # 数据库的连接配置 app.config[‘SQLALCHEMY_DATABASE_URI‘] = ‘mysql+pymysql://root:mysql@17.11.15.12:3306/flask_0620‘ # 追踪数据库修改的配置,如果为True,那么数据库在数据操作的时候,会向外发出信号 app.config[‘SQLALCHEMY_TRACK_MODIFICATIONS‘] = False manager = Manager(app) # 初始化SQLAlchemy对象并且将app传入 db = SQLAlchemy(app) # 关联迁移,将app和数据库的操作对象传入 Migrate(app, db, ) manager.add_command(‘ddbb‘, MigrateCommand) # 定义 角色 的模型,对应到数据库就是一张表 # admin: class Role(db.Model): # 指定表名,可以不用写,默认会以当前类的类名小写作为表名 __tablename__ = "roles" id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(64), unique=True) info = db.Column(db.String(64)) # 指定关系,可以通过一个属性将当前一的一方查询出所对应的多的这一方的所有数据 # backref:反向引用,给user身上添加role这个属性,并且该属性指定的值就是当前用户所对应的一的这一方的数据 # users和role是自己随便起的名字 users = db.relationship(‘User‘, backref=‘role‘) def __repr__(self): return "<Role %s>" % self.name class User(db.Model): __tablename__ = "users" id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(64), unique=True) email = db.Column(db.String(64), unique=True) password = db.Column(db.String(64)) idcard = db.Column(db.String(64), unique=True) # 添加外键,指定该外键关系哪张表的哪一列 role_id = db.Column(db.Integer, db.ForeignKey(‘roles.id‘)) def __repr__(self): return "<User %s>" % self.name @app.route(‘/‘) def index(): return ‘hello world‘ if __name__ == ‘__main__‘: manager.run()
>初始化迁移,创建迁移所需要的一系列的命令
python manager.py ddbb init
>生成当前版本的迁移文件
python manager.py ddbb migrate -m‘initial‘
>执行迁移文件
python manager.py ddbb upgrade
python manager.py ddbb migrate -m‘role and info clo‘
python manager.py ddbb upgrade
>版本的查看
python manager.py ddbb current
python manager.py ddbb history
>返回到某一个版本
python manager.py ddbb downgrade(upgrade) 版本号
原文:https://www.cnblogs.com/songyanxin/p/11062455.html