1. 程式人生 > >Flask項目中數據庫遷移的使用

Flask項目中數據庫遷移的使用

database manager 回滾 導出數據庫 clas ger initial 過程 刪除

數據庫遷移

  • 在開發過程中,需要修改數據庫模型,而且還要在修改之後更新數據庫。最直接的方式就是刪除舊表,但這樣會丟失數據。
  • 更好的解決辦法是使用數據庫遷移框架,它可以追蹤數據庫模式的變化,然後把變動應用到數據庫中。
  • 在Flask中可以使用Flask-Migrate擴展,來實現數據遷移。並且集成到Flask-Script中,所有操作通過命令就能完成。
  • 為了導出數據庫遷移命令,Flask-Migrate提供了一個MigrateCommand類,可以附加到flask-script的manager對象上。

    首先要在虛擬環境中安裝Flask-Migrate。

    pip install flask-migrate
  • 以下為實現數據庫遷移的代碼層面設置(未定義具體的數據庫):
  • from flask import Flask  # 導入flask
    from flask_sqlalchemy import SQLAlchemy   # 導入SQLALchemy
    from flask_migrate import Migrate,MigrateCommand  # 導入Migrate
    from flask_script import Manager     # 導入終端命令
    
    app = Flask(__name__)      # 初始化Flask
    manager = Manager(app)     # 創建終端命令對象
    app.config[‘SQLALCHEMY_DATABASE_URI‘] = ‘mysql://root:[email protected]:3306/Flask_test‘ # 鏈接數據庫 app.config[‘SQLALCHEMY_TRACK_MODIFICATIONS‘] = True # 開啟事件追蹤 db = SQLAlchemy(app) # 初始化數據庫對象 # 使用遷移類將應用和數據庫連接對象保存, 第一個參數是Flask的實例,第二個參數是Sqlalchemy數據庫實例 migrate = Migrate(app,db) # 將數據庫的遷移命令添加到manager中 manager.add_command(‘db‘,MigrateCommand)

  以下為終端命令層面操作數據庫遷移

  #這個命令會創建migrations文件夾,所有遷移文件都放在裏面,初始化時設置
  python database.py db init

  # 創建遷移腳本(給遷移文件起備註名) -m 後面為備註名
  python database.py db migrate -m ‘initial migration‘
  
  # 更新數據庫
  python database.py db upgrade

  # 查看以前的版本
  
python app.py db history

  # 回滾到指定版本
  python app.py db downgrade 版本號

  有不同簡介歡迎交流
 
 

 

Flask項目中數據庫遷移的使用