Flask-Migrate的使用

组织一个 Flask 项目通常需要遵循一定的结构,以便代码清晰、可维护。下面是一个典型的 Flask 项目结构:

python 复制代码
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

python 复制代码
# app/__init__.py

from .app import create_app

2.3 在 项目拆分文件中 app/app.py

python 复制代码
# 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 查看帮助

python 复制代码
flask db --help
  • 3.2 初始化,只需要一次,创建一个目录migrations,用于存放迁移相关的脚本文件

    flask db init

  • 3.3 根据模型与数据表,创建迁移脚本

    flask db migrate

  • 3.4 执行迁移脚本

    flask db upgrade

4. 提示

  • 初始化只需要执行一次,以后操作2和3反复执行
  • 不是每次迁移都会成功,出问题时手动解决
相关推荐
灵智工坊LingzhiAI2 小时前
人体坐姿检测系统项目教程(YOLO11+PyTorch+可视化)
人工智能·pytorch·python
tan180°8 小时前
MySQL表的操作(3)
linux·数据库·c++·vscode·后端·mysql
优创学社29 小时前
基于springboot的社区生鲜团购系统
java·spring boot·后端
why技术9 小时前
Stack Overflow,轰然倒下!
前端·人工智能·后端
幽络源小助理9 小时前
SpringBoot基于Mysql的商业辅助决策系统设计与实现
java·vue.js·spring boot·后端·mysql·spring
烛阴10 小时前
简单入门Python装饰器
前端·python
好开心啊没烦恼10 小时前
Python 数据分析:numpy,说人话,说说数组维度。听故事学知识点怎么这么容易?
开发语言·人工智能·python·数据挖掘·数据分析·numpy
面朝大海,春不暖,花不开10 小时前
使用 Python 实现 ETL 流程:从文本文件提取到数据处理的全面指南
python·etl·原型模式
ai小鬼头10 小时前
AIStarter如何助力用户与创作者?Stable Diffusion一键管理教程!
后端·架构·github
简佐义的博客10 小时前
破解非模式物种GO/KEGG注释难题
开发语言·数据库·后端·oracle·golang