flask中数据库的迁移

一     ****    flask中数据库的创建

导入数据库和迁移命令

app.py


# -*- coding: utf-8 -*-

from flaskimport Flask

from flask_scriptimport Manager

from flask_sqlalchemyimport SQLAlchemy

from flask_migrateimport MigrateCommand, Migrate

app = Flask(__name__)

# 数据库的连接配置

app.config['SQLALCHEMY_DATABASE_URI'] ='mysql+pymysql://root:[email protected]:13306/migrates'

# 追踪数据库修改的配置,如果为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 "" %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 "" %self.name

@app.route('/')

def index():

return 'hello world'

if __name__ =='__main__':

manager.run()

二 ****  执行迁移的命令

执行迁移的命令

>初始化迁移,创建迁移所需要的一系列的命令

python app.py ddbb init

>生成当前版本的迁移文件

python app.py ddbb migrate -m'initial' 

>执行迁移文件

python app.py ddbb upgrade

三   ****  当表中需要增加新的字段,如何再进行数据库的迁移

python app.py ddbb migrate -m'role and info clo'

python app.py ddbb upgrade

四   **** 迁移的回退

>版本的查看

python app.py ddbb current

python app.py ddbb history

>返回到某一个版本

python app.py ddbb downgrade(upgrade) 版本号

你可能感兴趣的:(flask中数据库的迁移)