- 🌈所属专栏:【Flask】
- ✨作者主页: Mr.Zwq
- ✔️个人简介:一个正在努力学技术的Python领域创作者,擅长爬虫,逆向,全栈方向,专注基础和实战分享,欢迎咨询!
您的点赞、关注、收藏、评论,是对我最大的激励和支持!!!🤩🥰😍
目录
简介
安装
主要命令
1.初始化
2.迁移
3.升级
4.降级
代码实现
config.py配置文件
exts.py文件
models.py文件
app.py文件
使用flask_migrate过程
首次使用
后续使用
总结
简介
Flask-Migrate是Flask应用中的一个扩展子模块,它基于Alembic进行了封装,并集成到Flask中,主要用于在Flask应用中轻松管理数据库迁移。以下是Flask-Migrate的主要特点和功能:
- 数据库迁移管理:
- 支持多种数据库。
- 提供一个简单的命令行工具,用于创建和管理数据库迁移。
- 数据库模型定义:
- 提供一个简单的方式来定义数据库模型,使在定义数据库迁移时更加容易。
- 数据库迁移脚本生成:
- 可以自动生成数据库迁移脚本,并支持手动编辑和修改。
- 数据库版本控制:
- 能够自动检测数据库的版本,并确保进行正确的迁移。
- 数据库备份和还原:
- 提供一个简单的方式来备份和还原数据库。
- 程序结构:
- 主要包含Flask-Migrate的初始化和配置、数据库的版本号管理、数据库迁移的管理等功能。
flask_migrate.MigrateCommand
:用于注册Flask-Migrate命令,包括数据库初始化、数据库迁移等命令。flask_migrate.Migrate
:迁移引擎,主要实现数据库模型与数据库表的映射、迁移脚本的生成和执行等功能。flask_migrate.utils
:包含一些常用的工具函数,如生成哈希、获取当前时间等。migrations
:存放迁移脚本的目录。versions
:存放迁移版本号的目录。
- 数据结构:
- 在管理数据库迁移的过程中,Flask-Migrate使用两个主要数据结构:
- 数据库版本号(Database Version):表示当前数据库的版本号。在创建数据库时,版本号为0,每接受一次迁移,版本号将会递增。
- 迁移脚本(Migration Script):包含数据库结构的更改内容。使用SQLAlchemy生成,通过将当前的数据库模型和数据库版本号进行比较,生成一个差异脚本,将这份脚本应用于目标数据库,从而完成数据库的迁移。每次迁移会生成一个新的迁移脚本。
- 在管理数据库迁移的过程中,Flask-Migrate使用两个主要数据结构:
- 使用流程:
- 安装Flask-Migrate:
pip install flask-migrate
- 初始化:在应用中配置Flask-Migrate,并创建必要的目录结构。
- 迁移操作:通过命令行工具执行数据库迁移操作,如初始化、迁移、升级等。
- 安装Flask-Migrate:
Flask-Migrate通过提供这些功能,使Flask应用能够更方便、更安全地管理数据库迁移,从而保持数据模型与数据库结构的一致性。
安装
pip install flask-migrate
主要命令
1.初始化
flask db init
2.迁移
flask db migrate
3.升级
flask db upgrade
4.降级
flask db downgrade
代码实现
config.py配置文件
class Config():# 数据库配置信息host = '127.0.0.1' # 主机port = 3306 # 端口user = 'root' # MySQL账户pwd = '123456' # MySQL密码database = 'test' # 使用的数据库名称# SQLALCHEMY_DATABASE_URI = 'sqlite:///XXX.db' # sqlite数据库的配置(数据库名称:XXX.db)SQLALCHEMY_DATABASE_URI = f"mysql+pymysql://{user}:{pwd}@{host}:{port}/{database}?charset=utf8mb4" # MySQL数据库SQLALCHEMY_ECHO = False # 查询时是否显示原始SQL语句,为False不显示SQLALCHEMY_TRACK_MODIFICATIONS = False # 跟踪数据库的修改,会增加性能消耗,不建议开启
exts.py文件
# 扩展放在独立文件供其它地方进行引用,可有效防止循环导包问题
from flask_sqlalchemy import SQLAlchemydb = SQLAlchemy()
关于 flask_sqlalchemy 可查看文章:python flask配置数据库并进行orm操作 flask_sqlalchemy-CSDN博客
models.py文件
from exts import db
from datetime import datetime# 测试用户表
class User(db.Model):__tablename__ = 'user'id = db.Column(db.Integer, primary_key=True)username = db.Column(db.String(20), nullable=False)email = db.Column(db.String(50), unique=True, nullable=False)password = db.Column(db.String(50), nullable=False)create_time = db.Column(db.DateTime, default=datetime.now)
app.py文件
from flask import Flask
from config import Config
from exts import db
from models import User
from flask_migrate import Migrateapp = Flask(__name__)# 读取参数配置
app.config.from_object(Config)
# 创建db对象
db.init_app(app)# 创建migrate对象并绑定app,db
migrate = Migrate(app, db)@app.route('/')
def index():return 'hello world'if __name__ == '__main__':app.run(debug=True)
使用flask_migrate过程
首次使用
1.进入app.py所在的项目目录下,打开终端
第一次使用时需先进行初始化命令:flask db init
完成后,将会在本目录下自动生成migrations文件夹:
2.接下来进行迁移操作:flask db migrate
3.再进行升级操作:flask db upgrade
至此,数据表user已经创建成功。
查看user表:
与models文件相对应。
后续使用
每次修改models.py文件后,先进行迁移再进行升级操作即可,数据表即会被对应修改。
即先:flask db migrate,再:flask db upgrade
想要回退数据库的修改操作使用:flask db downgrade 进行降级操作即可。
总结
感谢观看,原创不易,如果觉得有帮助,请给文章点个赞吧,让更多的人看到。🌹🌹🌹
👍🏻也欢迎你,关注我。👍🏻
如有疑问,可在评论区留言哦~