flask-migrate 笔记

2019-11-26  本文已影响0人  宽哥好

在实际开发环境中,经常会发生数据库修改的行为。一般我们修改数据库不会手动取修改,而是取修改 orm 模型,然后在把模型映射到数据库中。
而 flask-migrate 就是这样一种工具 ,它的底层是 alembic 。

安装:

pip install flask-migrate

使用

要让 flask-migrate 能够管理 app 中的数据库,需要使用 Migrate(app,db) 来绑定 app 和 数据库。假如现在有以下文件:

# app.py

from flask import Flask
import config
from exts import db
from models import User

app = Flask(__name__)
app.config.from_object(config)
db.init_app(app)  #


@app.route('/')
def index():
    return 'index'


if __name__ == '__main__':
    app.run()

# exts.py

from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
# models.py

from exts import db

class User(db.Model):
    __tablename__ = 'user'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    name = db.Column(db.String(50), nullable=False)
# config.py

HOSTNAME = '127.0.0.1'
PORT = 3306
DATABASE = 'flask_migrate_demo'
USERNAME = 'root'
PASSWORD = 'chenkuan1110'
DB_URI = 'mysql+pymysql://{}:{}@{}:{}/{}'.format(USERNAME, PASSWORD, HOSTNAME, PORT, DATABASE)

SQLALCHEMY_DATABASE_URI = DB_URI
SQLALCHEMY_TRACK_MODIFICATIONS = False

现在通过 flask-script来配置 flask-migrate

# manage.py
from flask_script import Manager
from app import app
from exts import db
from flask_migrate import Migrate, MigrateCommand

manager = Manager(app)  # 创建manager对象
Migrate(app, db)  # 绑定 app 和 db
manager.add_command('db', MigrateCommand)  # 添加flask-migrate子命令

if __name__ == '__main__':
    manager.run()

现在就可以通过 python manage.py db xxx来运行 flask-migrate中的命令来映射数据库等操作,如

  1. 初始化迁移文件:
python manage.py db init
  1. 将模型映射到文件中
python manage.py db migrate
  1. 将添加的映射文件添加到数据库:
python manage.py db upgrade

flask-migrate 使用注意事项

上一篇下一篇

猜你喜欢

热点阅读