Python Flask,資料庫,SQLAlchemy,資料庫遷移 (根據模型類自動生成資料庫表),Flask-Migrate
阿新 • • 發佈:2019-01-02
在開發過程中,需要修改資料庫模型類,而且還要在修改之後更新資料庫。最直接的方式就是刪除舊錶,但這樣會丟失資料。
更好的解決辦法是使用資料庫遷移框架,它可以追蹤資料庫模型的變化,然後把變動應用到資料庫中。
在Flask中可以使用Flask-Migrate擴充套件,來實現資料庫遷移。並且整合到Flask-Script中,所有操作通過命令來完成。
安裝flask_script包: pip install Flask-Script
安裝Flask-Migrate包: pip install flask-migrate
demo.py(資料庫遷移,讓模型類與資料庫產生關聯):
#coding=utf-8 from flask import Flask from flask_sqlalchemy import SQLAlchemy from flask_migrate import Migrate, MigrateCommand # 匯入 from flask_script import Manager # 匯入 app = Flask(__name__) manager = Manager(app) app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:密碼@127.0.0.1:3306/資料庫名' app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True db = SQLAlchemy(app) # 第一個引數是Flask的例項,第二個引數是Sqlalchemy資料庫例項 Migrate(app, db) # 例項化物件時,會自動將Migrate物件注入到app中,讓app和db物件產生關聯。 # manager是Flask-Script的例項,這條語句在flask-Script中新增一個db命令 manager.add_command('db', MigrateCommand) # 'db'命令名可以任意 # 定義模型類 class Role(db.Model): pass if __name__ == '__main__': manager.run() # 通過管理類物件來執行flask。 需要在命令列中啟動web服務。
在命令列中操作:
$ python demo.py db init # 初始化,會建立migrations資料夾,所有遷移檔案都放在裡面。
$ python demo.py db migrate -m '遷移版本的備註資訊' # 在migrations資料夾中生成遷移檔案(遷移版本)
$ python demo.py db upgrade # 根據遷移檔案更新資料庫
$ python demo.py db history # 檢視資料庫遷移(更新)歷史以及遷移版本號
$ python demo.py db downgrade 版本號 # 回退資料庫到指定版本號