天天看點

flask-migrate擴充

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指令對表實施更新操作但不影響表中的内容。