使用Flsak-Migrate数据库迁移框架,可以保证数据库结构在发生变化时,改变数据库结构不至于丢失数据库的数据。使用其进行数据库进行数据库的迁移,主要分为三个步骤:
from flask_migrate import Migrate,MigrateCommand
from fask_script import Manager
...
manager=Manager(app)
migrate=Migrate(app,db)
manager.add_command('db',MigrateCommand)
需要注意的是,引入Manager支持启动应用程序的命令行时,我们还需要修改app的run语句,改为:
if __name__=='__main__':
manager.run()
接下来我们使用命令行模式创建一个迁移的仓库:
>>> python test.py db init
使用migarate子命令来创建数据库迁移脚本,在此之前我们先改动一下数据库的模型来验证迁移是否成功,我们在User模型中添加age属性:
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)
...
添加好之后,使用下面的命令自动添加迁移的脚本:
python test.py db migrate -m "inition migrate"
使用upgrade和downgrade命令分别向数据库更新数据和从数据库更新数据,使用upgrade命令将本次的改动更新到数据库中:
python test.py db upgrade
Github位置:
https://github.com/HymanLiuTS/flaskTs