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