Flask 資料庫遷移工具 flask-migrate
阿新 • • 發佈:2019-02-01
新資料庫遷移 flask-migrate
由於模型中經常會新加一行或幾行column (比如用來儲存賬戶的確認狀態),此時要修改 models.py,並執行一次新資料庫遷移
具體步驟:
app\models.py、app\__init.py、manage.py裡面,設定好 db的引用關係
__init__.py:初始化db
models.py: 設定好表格、欄位屬性from flask_sqlalchemy import SQLAlchemy db = SQLAlchemy() db.init_app(app) config[config_name].init_app(app) # config.py裡,指定了資料庫檔案,比如 mysql:///, sqlite:///
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)
第一次使用:
- 初始化:(venv) python manage.py db init 這個命令會在專案下建立 migrations 資料夾,所有遷移指令碼都存放其中。
- 建立第一個版本:(venv) $ python manage.py db migrate -m "initial migration" 檢查migrations\versions,會新建一個版本.py,檢查裡面表格及欄位
- 執行升級 (venv) $ python manage.py db upgrade,會把專案使用的資料庫檔案,更新為新的表格、欄位,同時保留資料
字尾更新:
- 更新表格的欄位 (models.py)
- 再次執行一下 db migrate -m
- db upgrade -> 資料庫會更新