当前位置: 首页 > news >正文

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__.pyfrom .app import create_app

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

# app/app.pyfrom flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migratefrom config.Config import DevelopmentConfig  # 导入配置
from .views import author  # 导入author蓝图# 实例 db migeate
db = SQLAlchemy()
migrate = Migrate()# 创建app
def create_app():# 实例appapp = Flask(__name__)# 配置app.config.from_object(DevelopmentConfig)# 初始化 db migratedb.init_app(app)migrate.init_app(app, db)# 注册蓝图app.register_blueprint(author)# 返回appreturn 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反复执行
  • 不是每次迁移都会成功,出问题时手动解决

 

http://www.lryc.cn/news/440870.html

相关文章:

  • python怎么输入整数
  • 代码随想录打卡Day36
  • 速盾:凡科建站开cdn了吗?
  • python贪吃蛇游戏项目源码【免费】
  • Mycat搭建分库分表
  • Python中的数据结构
  • mysql笔记8(多表查询)
  • typescript-tsconfig文件解释
  • 所有用贪心的算法和所有用动态规划(dp)的算法合集
  • 论文阅读 | 基于流模型和可逆噪声层的鲁棒水印框架(AAAI 2023)
  • 上线跨境电商商城的步骤
  • Python基础(七)——PyEcharts数据分析(面向对象版)
  • 滚雪球学SpringCloud[5.1讲]: Spring Cloud Config详解
  • Unity常用随机数算法
  • dial unix /var/run/docker.sock: connect: permission denied
  • Prompt提示词技巧
  • 滑动窗口(6)_找到字符串中所有字母异位词
  • 【无标题】rocket
  • Maven国内镜像(四种)
  • Linux环境中如何快速修改 JAR 包中的配置文件
  • java高频面试题(2024最新)
  • WEB 编程:使用富文本编辑器 Quill 配合 WebBroker 后端
  • 新书出版,大陆首本NestJS图书《NestJS全栈开发解析:快速上手与实践》
  • 面试题:react、vue中的key有什么作用?(key的内部原理)
  • 基于python+django+vue的外卖管理系统
  • 初始分布式系统和Redis特点(
  • 计算机毕业设计 家电销售展示平台的设计与实现 Java实战项目 附源码+文档+视频讲解
  • Android RecyclerView 缓存机制深度解析与面试题
  • 管道缺陷检测系统源码分享
  • python定时发送邮件的功能如何实现自动化?