Flask-Migrate

在程序开发过程中,我们难以避免会对数据库表结构进行修改,而每一次修改,都可能会影响到已经完成的程序,很多语言中都有数据库迁移的概念,数据库迁移可以用增量式的来帮助我们完成数据库更新,极大的方便我们的开发。

Flask-Migrate是一个Flask扩展,用于处理数据库迁移。Flask-Script也是一个Flask扩展,用于提供自定义的运行脚本。一般情况下,Flask-Migrate结合Flask-Script使用,让数据库操作可以通过命令行方式来执行。

pip install Flask-Migrate

将Flask-Migrate加入Flask项目中

# manager.py文件

import MyApp
from flask_script import Manager

# 导入 Flask-Migrate 中的 Migrate 和 MigrateCommand
# 这两个东西说白了就是想在 Flask-Script 中添加几个命令和指令而已
from flask_migrate import Migrate,MigrateCommand

app = MyApp.create_app()
# 让app支持 Manager
manager = Manager(app) # type:Manager

# Migrate 既然是数据库迁移,那么就得告诉他数据库在哪里, 并且告诉他要支持那个app
Migrate(app,MyApp.db)
# 现在就要告诉manager 有新的指令了,这个新指令在MigrateCommand 中存着呢
manager.add_command("db",MigrateCommand) # 当你的命令中出现 db 指令,则去MigrateCommand中寻找对应关系

@manager.command
def func(arg):
    print(arg)

@manager.option("-n","--name",dest="name")
@manager.option("-s","--url",dest="url")
def talk(name,url):
    print(name)
    print(url)

if __name__ == '__main__':
    # 替换原有的app.run()
    manager.run()

执行数据库迁移指令

1. 使用init 子命令创建迁移仓库, 会创建migrations 文件夹,所有迁移脚本都存放其中。
python manager.py db init

2. 创建迁移脚本, 如同 Django 中的 makemigration
python manager.py db migrate 

3. 更新数据库, 如同 Django 中的 migrate
python manager.py db upgrade
posted @ 2019-07-08 15:25  言值  阅读(184)  评论(0编辑  收藏  举报