【3】Flask-Migrate实现数据库的更新

使用Flsak-Migrate数据库迁移框架,可以保证数据库结构在发生变化时,改变数据库结构不至于丢失数据库的数据。使用其进行数据库进行数据库的迁移,

一、准备文件

app\models.py、app__init.py、manage.py里面,设置好 db的引用关系

init.py:初始化db

from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
db.init_app(app)
config[config_name].init_app(app) # config.py里,指定了数据库文件,比如 mysql:///, sqlite:///

models.py: 设置好表格、字段属性

from . import db, login_manager
class Order(db.Model):
		__tablename__ = 'orders'    # 订单表格
		id = db.Column(db.Integer, primary_key=True)
		body = db.Column(db.Text)

class User(db.Model):
			__tablename__='users'
			id=db.Column(db.Integer,primary_key=True)
			name=db.Column(db.String(64),unique=True)
			role_id=db.Column(db.Integer,db.ForeignKey('roles.id'))
			age=db.Column(db.Integer)
...

manage.py:添加db命令

from app import create_app, db
from flask_script import Manager, Shell
from flask_migrate import Migrate, MigrateCommand
app = create_app(os.getenv('FLASK_CONFIG') or 'default')
migrate = Migrate(app, db)
manager.add_command('db', MigrateCommand)

if __name__=='__main__':
		manager.run()

二、步骤

主要分为三个步骤:

1 创建数据仓库

python manage.py db init

‘db’是在manager.add_command(‘db’,MigrateComand)这句中我们声明的命令行对象名称,init是Migrate命令,表示初始化迁移仓库,运行完成之后,会在当前目录下创建一个migrations的文件夹,用于进行迁移的数据库脚本都放在这里.

2 创建迁移脚本

使用migarate子命令来创建数据库迁移脚本,在此之前我们先改动一下数据库的模型来验证迁移是否成功,我们在User模型中添加age属性:

添加好之后,使用下面的命令自动添加迁移的脚本:

python manage.py db migrate -m "inition migrate"

3 更新数据

使用upgrade和downgrade命令分别向数据库更新数据和从数据库更新数据,使用upgrade命令将本次的改动更新到数据库中:

python manage.py db upgrade

参考资料:

http://blog.csdn.net/hyman_c/article/details/52742287

http://blog.csdn.net/kevin_qq/article/details/51777190

药企,独角兽,苏州。团队长期招人,感兴趣的都可以发邮件聊聊:tiehan@sina.cn
个人公众号,比较懒,很少更新,可以在上面提问题,如果回复不及时,可发邮件给我: tiehan@sina.cn