Flask-Migrate的使用
组织一个 Flask 项目通常需要遵循一定的结构,以便代码清晰、可维护。下面是一个典型的 Flask 项目结构:
my_flask_app/
│
├── app/
│ ├── __init__.py
│ ├── models.py
│ ├── views.py
│ ├── forms.py
│ ├── templates/
│ │ ├── base.html
│ │ ├── index.html
│ └── static/
│ ├── css/
│ ├── js/
│ └── images/
│
├── migrations/
│
├── tests/
│ ├── __init__.py
│ ├── test_app.py
│
├── venv/
│
├── config.py
│
├── manage.py
│
├── requirements.txt
│
└── README.md
目录和文件说明
app/
__init__.py
: 初始化 Flask 应用,注册蓝图和扩展。models.py
: 数据库模型定义。views.py
: 视图函数,处理路由和请求。forms.py
: 表单定义(如果使用 Flask-WTF)。templates/
: HTML 模板文件。static/
: 静态文件(CSS、JavaScript、图像等)。
migrations/
- 数据库迁移文件夹,用于存储 Alembic 生成的迁移脚本。
tests/
- 测试代码文件夹。
venv/
- 虚拟环境文件夹。
config.py
- 配置文件,存储应用配置变量。
manage.py
- 管理脚本,用于启动应用和其他管理任务。
requirements.txt
- 依赖文件,列出所有需要安装的 Python 包。
README.md
- 项目说明文件,提供项目的基本信息和使用说明。
1. 安装:
pip install Flask-Migrate
2. 使用
2.1 在 app.py文件中
from flask_migrate import Migrate
# 创建迁移对象
migrate = Migrate(app, db)
2.2 在 项目拆分文件中 app/__init__.py
# app/__init__.py
from .app import create_app
2.3 在 项目拆分文件中 app/app.py
# app/app.py
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
from config.Config import DevelopmentConfig # 导入配置
from .views import author # 导入author蓝图
# 实例 db migeate
db = SQLAlchemy()
migrate = Migrate()
# 创建app
def create_app():
# 实例app
app = Flask(__name__)
# 配置
app.config.from_object(DevelopmentConfig)
# 初始化 db migrate
db.init_app(app)
migrate.init_app(app, db)
# 注册蓝图
app.register_blueprint(author)
# 返回app
return app
3. 迁移
3.1 查看帮助
flask db --help
- 3.2 初始化,只需要一次,创建一个目录
migrations
,用于存放迁移相关的脚本文件
flask db init
- 3.3 根据模型与数据表,创建迁移脚本
flask db migrate
- 3.4 执行迁移脚本
flask db upgrade
4. 提示
- 初始化只需要执行一次,以后操作2和3反复执行
- 不是每次迁移都会成功,出问题时手动解决