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 -> 数据库会更新


你可能感兴趣的:(Alembic,Flask)