当前位置: 首页 > 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反复执行
  • 不是每次迁移都会成功,出问题时手动解决

 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 网络安全实训八(y0usef靶机渗透实例)
  • 9.17日常记录
  • JavaEE:网络编程(套接字)
  • [Meachines] [Medium] Bart Server Monitor+Internal Chat+UA投毒+Winlogon用户密码泄露权限提升
  • 线性代数书中求解线性方程组的三种方法的实例
  • TESSY创建以及设计一个测试用例
  • 英文ai写作怎么写?5个软件帮助你轻松进行ai写作
  • 9.18学习记录
  • C++:日期类的实现
  • 20240918 每日AI必读资讯
  • GEE教程:1950-2023年ECMWF数据中积雪的长时序统计分析
  • MySQL学习(视图总结)
  • 安卓将本地日志上传到服务器
  • 高效容器化技术(1)---容器化技术简介
  • 如何快速学习拼音打字?
  • php的引用
  • 2019年如何成为全栈工程师?
  • ES6之路之模块详解
  • IDEA 插件开发入门教程
  • Java 最常见的 200+ 面试题:面试必备
  • Java应用性能调优
  • Java知识点总结(JDBC-连接步骤及CRUD)
  • leetcode-27. Remove Element
  • mysql 5.6 原生Online DDL解析
  • MySQL主从复制读写分离及奇怪的问题
  • Python学习之路16-使用API
  • React Transition Group -- Transition 组件
  • select2 取值 遍历 设置默认值
  • ubuntu 下nginx安装 并支持https协议
  • 阿里云ubuntu14.04 Nginx反向代理Nodejs
  • 道格拉斯-普克 抽稀算法 附javascript实现
  • 开源SQL-on-Hadoop系统一览
  • 利用DataURL技术在网页上显示图片
  • 小程序button引导用户授权
  • 整理一些计算机基础知识!
  • ​软考-高级-系统架构设计师教程(清华第2版)【第9章 软件可靠性基础知识(P320~344)-思维导图】​
  • #{}和${}的区别是什么 -- java面试
  • (52)只出现一次的数字III
  • (c语言)strcpy函数用法
  • (待修改)PyG安装步骤
  • (二)构建dubbo分布式平台-平台功能导图
  • (附源码)springboot工单管理系统 毕业设计 964158
  • (强烈推荐)移动端音视频从零到上手(下)
  • (十二)devops持续集成开发——jenkins的全局工具配置之sonar qube环境安装及配置
  • (十二)python网络爬虫(理论+实战)——实战:使用BeautfulSoup解析baidu热搜新闻数据
  • (一)使用Mybatis实现在student数据库中插入一个学生信息
  • (自用)网络编程
  • ./mysql.server: 没有那个文件或目录_Linux下安装MySQL出现“ls: /var/lib/mysql/*.pid: 没有那个文件或目录”...
  • .net core 连接数据库,通过数据库生成Modell
  • .net dataexcel 脚本公式 函数源码
  • .NET MAUI Sqlite程序应用-数据库配置(一)
  • .NET 中什么样的类是可使用 await 异步等待的?
  • .NET高级面试指南专题十一【 设计模式介绍,为什么要用设计模式】
  • .NET教程 - 字符串 编码 正则表达式(String Encoding Regular Express)
  • @cacheable 是否缓存成功_让我们来学习学习SpringCache分布式缓存,为什么用?