当前位置:   article > 正文

【14.0】Flask框架之flask-migrate

flask-migrate

【一】引入

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

    • 在django支持这种操作

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

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

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

【二】使用步骤

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

步骤一:安装依赖

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

步骤二:配置Manager和Migrate

  • 在你的Flask应用程序所在的.py文件中,导入Manager和MigrateCommand,并创建Manager对象:
  1. from flask_script import Manager
  2. from flask_migrate import Migrate, MigrateCommand
  3. manager = Manager(app)
  • 这里的app是你的Flask应用实例。

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

  1. migrate = Migrate(app, db) # db是SQLAlchemy的数据库对象
  2. manager.add_command('db', MigrateCommand)
  • 完整如下
  1. from flask_script import Manager
  2. from flask_migrate import Migrate, MigrateCommand
  3. manager = Manager(app)
  4. # flask-script可以自定义命令---》
  5. # flask-migrate本质是它借助于flask-script增加了几个命令来对数据库表和字段进行管理
  6. Migrate(app, db) # sqlalchemy的db对象
  7. manager.add_command('db', MigrateCommand)
  8. 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命令来记录变更和同步到数据库中。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/412188
推荐阅读
相关标签
  

闽ICP备14008679号