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'
Python flask2.0与flask_script与出现不兼容问题解决及 KeyError: ‘migrate‘ 错误解决办法,数据库迁移migrate_第1张图片
原因就是flask2.0 移除了_compat这个模块,而且flask_script模块也停止维护了:

解决方法:

  1. 降低各类库版本,去使用上述代码
  2. 使用Flask2.0支持的方法去使用migrate

下面是一个错误的演示,导致出现了KeyError: 'migrate'

from app import create_app, db
from flask_migrate import Migrate

if __name__ == '__main__':
    # 1. 创建Flask对象
    app = create_app('development')
    migrate = Migrate(app, db)
    # 2. 运行
    app.run()

如图所示:
Python flask2.0与flask_script与出现不兼容问题解决及 KeyError: ‘migrate‘ 错误解决办法,数据库迁移migrate_第2张图片
这里错误的原因是因为通过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

Python flask2.0与flask_script与出现不兼容问题解决及 KeyError: ‘migrate‘ 错误解决办法,数据库迁移migrate_第3张图片

你可能感兴趣的:(flask,python,后端)