1.因為采用db.create_all() 在後期修改表字段時,不會自動映射到資料庫中,必須删除表,然後重新運作才會映射,這樣不符合實際的需求,是以flask-Migrate就是為了解決這個問題,它可以在每次修改模型後,可以将修改的東西映射到資料庫中。
2.首先進入到flask的虛拟環境或者實體環境中 然後使用pip install flask-migrate進行安裝;安裝flask-script 支援指令行操作pip install flask-script
建立manage.py檔案
from flask_script import Manager
from flask_migrate import Migrate,MigrateCommand
#主檔案中導入app初始化manage
from zhihu import app
#db = SQLAlchemy()
from exts import db
#導入需要遷移的資料庫模型
from models import User,Questions,Answer
#讓python支援指令行工作
manager = Manager(app)
#使用migrate綁定app和db
migrate = Migrate(app,db)
#添加遷移腳本的指令到manager中
manager.add_command(‘db’,MigrateCommand)
if__name__==‘main’:
manager.run()
初始化
(venv) $ python manage.py db init
建立遷移腳本
(venv) $ python manage.py db migrate [-m xxxxx]
更新資料庫
(venv) $ python hello.py db upgrade
檢視曆史記錄
(venv) $ python hello.py db history
版本回退
(venv) $ python hello.py db downgrade 版本号
第一次遷移實際上相當于調用db.create_all(),但在後續遷移中,upgrade指令對表實施更新操作但不影響表中的内容。