1. 程式人生 > >Flask 資料庫遷移工具 flask-migrate

Flask 資料庫遷移工具 flask-migrate

新資料庫遷移 flask-migrate

由於模型中經常會新加一行或幾行column (比如用來儲存賬戶的確認狀態),此時要修改 models.py,並執行一次新資料庫遷移


具體步驟:
app\models.py、app\__init.py、manage.py裡面,設定好 db的引用關係

__init__.py:初始化db

from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
db.init_app(app)
config[config_name].init_app(app) # config.py裡,指定了資料庫檔案,比如 mysql:///, sqlite:///
models.py: 設定好表格、欄位屬性
from . import db, login_manager
class Order(db.Model):
    __tablename__ = 'orders'    # 訂單表格
    id = db.Column(db.Integer, primary_key=True)
    body = db.Column(db.Text)
# 其它表格。。。
manage.py:新增db命令
from app import create_app, db
from flask_script import Manager, Shell
from flask_migrate import Migrate, MigrateCommand
app = create_app(os.getenv('FLASK_CONFIG') or 'default')
migrate = Migrate(app, db)
manager.add_command('db', MigrateCommand)

第一次使用:

  1. 初始化:(venv)  python manage.py db init 這個命令會在專案下建立 migrations 資料夾,所有遷移指令碼都存放其中。
  2. 建立第一個版本:(venv) $ python manage.py db migrate -m "initial migration"  檢查migrations\versions,會新建一個版本.py,檢查裡面表格及欄位
  3. 執行升級 (venv) $ python manage.py db upgrade,會把專案使用的資料庫檔案,更新為新的表格、欄位,同時保留資料

字尾更新:

  1. 更新表格的欄位 (models.py)
  2. 再次執行一下 db migrate -m
    -> 相當於commit 更新到/migrate目錄
  3. db upgrade -> 資料庫會更新