在作項目的過程當中,咱們都遇到過,常常須要修改咱們數據庫的字段,在flask中,是經過ORM(對象關係映射)來建立數據庫的,表--->model class,字段---->屬性python
在flask中,咱們是經過第三方插件SQLAlchemy來建立數據庫表,採用的是db.create_all()方法,這樣,在咱們修改數據庫的Model的字段以後,想要同步數據庫,就只能經過刪除表,而後從新調用db.create_all()來完成。數據庫
因此,flask引入了flask_script 和 flask_migrate(pip install)來解決這個問題:flask
一、新建manager.py文件,編寫以下:app
from flask_script import Managerspa
from flask_migrate import Migrate, MigrateCommond插件
from app import app對象
from apps.models.base import dbblog
manager = Manager(app)ip
# 要使用flask-migrate,必須先綁定db和app同步
migrate = Migrate(app, db)
# 將MigrateCommand添加到manager中,"db"是自定義命令
manager.add_command("db", MigrateCommond)
if __name__ == "__main__":
manager.run()
二、打開終端,進入項目根目錄,執行下面命令
python manager.py db init
初始化成功後,你的項目目錄多了一個migrattions文件夾
三、而後每次在修改了model的字段後,執行下面的命令
python manager.py db migrate
從執行過程當中咱們能夠看到咱們修改的字段
執行完成後,再去查看生成的migrations文件夾,下面的versions裏面會多出來一個.py的遷移腳本文件,檢查表格及字段
三、更新數據庫
python manager.py db upgrade
upgrade會自動讀取剛纔生成的文件,將數據更新到數據庫中。
執行完成後,檢查你的數據庫,發現數據庫字段按照咱們的須要更新了。
【注1: python manager.py db migrate 將模型生成遷移文件,只要模型修改了,就執行一次這個命令】
【注2:python manger.py db upgrade 將遷移文件真正映射到數據庫中,每次運行了migrate命令,就要記得運行這個命令,否則數據庫中的信息是不會被修改的。】
【注3:記得要把對應的模型引入到manager.py文件中,否則執行命令是不會起做用的哦^_^】
四、回滾事物
1)運行 python manager.py db history
查看歷史版本,獲得history-id
2)運行 python manager.py db downgrade history-id
回退到指定歷史版本