【14.0】Flask框架之flask-migrate

发布时间 2023-08-29 15:52:35作者: Chimengmeng

【一】引入

  • 表,字段发生变化,都会有记录,自动同步到数据库中

    • 在django支持这种操作

    • 原生的sqlalchemy,不支持修改表的

  • flask-migrate可以实现类似于django的数据库迁移功能

python manage.py makemigrations #记录
python manage.py migrate        #真正的同步到数据库

【二】使用步骤

  • Flask-Migrate是一个用于管理数据库迁移的扩展,它基于Flask和SQLAlchemy。下

步骤一:安装依赖

  • 首先,确保你的Flask版本是2.2.2,并安装以下依赖:
pip3.8 install flask==2.2.2 
pip3.8 install flask-migrate==2.7.0
pip3.8 install flask-script==2.0.3

步骤二:配置Manager和Migrate

  • 在你的Flask应用程序所在的.py文件中,导入Manager和MigrateCommand,并创建Manager对象:
from flask_script import Manager
from flask_migrate import Migrate, MigrateCommand

manager = Manager(app)
  • 这里的app是你的Flask应用实例。

  • 然后,利用Migrate函数将你的应用程序和SQLAlchemy的数据库对象关联起来,并添加相应的命令到manager:

migrate = Migrate(app, db)  # db是SQLAlchemy的数据库对象
manager.add_command('db', MigrateCommand)
  • 完整如下
from flask_script import Manager
from flask_migrate import Migrate, MigrateCommand
manager = Manager(app)
# flask-script可以自定义命令---》
# flask-migrate本质是它借助于flask-script增加了几个命令来对数据库表和字段进行管理
Migrate(app, db) # sqlalchemy的db对象
manager.add_command('db', MigrateCommand) 

manager.run() # 以后使用python manage.py runserver 启动项目

步骤三:运行Manager

  • 使用manager.run()启动你的Flask应用程序,以后你可以通过运行python manage.py runserver来启动项目。

步骤四:初始化迁移

  • 第一次使用Flask-Migrate时,需要初始化迁移,此时会生成一个名为migrations的文件夹。
  • 在命令行中执行如下命令:
python manage.py db init
  • 该命令将在项目目录下生成一个migrations文件夹,用于记录迁移的编号和变更内容。

步骤五:修改模型

  • 当你需要更新数据库表结构时,只需在定义表的模型文件(一般是models.py)中进行修改,如增加、删除或修改字段。

步骤六:生成迁移脚本

  • 执行下面的命令,生成一个新的迁移脚本:
python manage.py db migrate
  • 该命令会基于模型的变化生成一个新的迁移脚本,将变更内容记录在之前创建的migrations文件夹中。

步骤七:应用迁移

  • 最后,执行下面的命令来将迁移应用到数据库中:
python manage.py db upgrade
  • 这个命令将根据生成的迁移脚本将实际的变更应用到数据库中。

  • 以上就是使用Flask-Migrate进行数据库迁移的完整步骤。

  • 通过这些步骤,你可以方便地进行数据库表结构的管理和变更。

  • 需要注意的是,每次对模型进行修改后,都需要运行db migratedb upgrade命令来记录变更和同步到数据库中。