Flask数据库迁移 #

一、Flask-Migrate概述 #

1.1 什么是数据库迁移 #

数据库迁移是管理数据库结构变更的方式,可以追踪数据库版本,支持升级和回滚。

1.2 安装 #

bash
pip install flask-migrate

1.3 初始化 #

python
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///app.db'

db = SQLAlchemy(app)
migrate = Migrate(app, db)

二、迁移命令 #

2.1 初始化迁移环境 #

bash
flask db init

2.2 生成迁移脚本 #

bash
flask db migrate -m "initial migration"

2.3 应用迁移 #

bash
flask db upgrade

2.4 回滚迁移 #

bash
flask db downgrade

2.5 查看迁移历史 #

bash
flask db history
flask db current

三、迁移流程 #

3.1 修改模型 #

python
class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80))
    email = db.Column(db.String(120))
    phone = db.Column(db.String(20))  # 新增字段

3.2 生成迁移 #

bash
flask db migrate -m "add phone field to user"

3.3 检查迁移脚本 #

python
def upgrade():
    op.add_column('user', sa.Column('phone', sa.String(20), nullable=True))

def downgrade():
    op.drop_column('user', 'phone')

3.4 应用迁移 #

bash
flask db upgrade

四、最佳实践 #

4.1 提交前检查 #

  • 检查迁移脚本是否正确
  • 测试upgrade和downgrade
  • 备份数据库

4.2 命名规范 #

bash
flask db migrate -m "add_user_phone_field"
flask db migrate -m "create_post_table"
flask db migrate -m "add_index_to_email"

五、总结 #

命令 说明
flask db init 初始化迁移
flask db migrate 生成迁移
flask db upgrade 应用迁移
flask db downgrade 回滚迁移

接下来让我们学习 用户认证概述,了解Flask用户认证!

最后更新:2026-03-28