flask|Python flask2.0与flask_script与出现不兼容问题解决及 KeyError: ‘migrate‘ 错误解决办法,数据库迁移migrate

Flask 1.0 + 版本 以下代码在该版本下测试:

from flask import Flask from flask_script import Manager from flask_migrate import Migrate, MigrateCommand app = Flask(__name__)# 创建脚本管理器对象 manager = Manager(app) # 让迁移时,app和db建立关联 migrate = Migrate(app,db) # 将数据库迁移的脚本、命令添加到脚本管理器对象 manager.add_command('db', MigrateCommand)if __name__ == '__main__': manager.run()

数据库迁移方法:
  1. python xx.py db init
  2. python xx.py db migrate
  3. python xx.py db upgrade
当flask版本提升到2.0以后,运行上述代码会出现下列错误:ModuleNotFoundError: No module named 'flask._compat'
flask|Python flask2.0与flask_script与出现不兼容问题解决及 KeyError: ‘migrate‘ 错误解决办法,数据库迁移migrate
文章图片

原因就是flask2.0 移除了_compat这个模块,而且flask_script模块也停止维护了:
解决方法:
  1. 降低各类库版本,去使用上述代码
  2. 使用Flask2.0支持的方法去使用migrate
下面是一个错误的演示,导致出现了KeyError: 'migrate'
from app import create_app, db from flask_migrate import Migrateif __name__ == '__main__': # 1. 创建Flask对象 app = create_app('development') migrate = Migrate(app, db) # 2. 运行 app.run()

如图所示:
flask|Python flask2.0与flask_script与出现不兼容问题解决及 KeyError: ‘migrate‘ 错误解决办法,数据库迁移migrate
文章图片

这里错误的原因是因为通过app = create_app('development') 去初始化(具体不用做了什么),而且我的Migrate(app, db) 是在初始化完成后使用的,上述是错误的用法
Flask 2.0 + 版本 正确的用法,版本信息如下:

from flask import Flask from flask_migrate import Migrate app = Flask(__name__) # 数据库迁移关联app和db Migrate(app,db)if __name__ == '__main__': app.run()

数据库迁移方法:
  1. flask db init
  2. flask db migrate
  3. flask db upgrade
【flask|Python flask2.0与flask_script与出现不兼容问题解决及 KeyError: ‘migrate‘ 错误解决办法,数据库迁移migrate】flask|Python flask2.0与flask_script与出现不兼容问题解决及 KeyError: ‘migrate‘ 错误解决办法,数据库迁移migrate
文章图片

    推荐阅读