【问题标题】:How to fix migrate keyError flask?如何修复迁移 keyError 烧瓶?
【发布时间】:2021-02-12 15:28:39
【问题描述】:

将列名从“id”更改为“_id”后,迁移烧瓶应用程序时出现 keyError

我试图将 col 名称从“id”更改为“_id”的原因是忽略 python 中 (id) 构建的冲突。

有人可以支持吗??

烧瓶数据库迁移

在 api/autoapp.py

from api.app import create_app
app = create_app("api.config.develop")  # app/config/develop.py


if __name__ == "__main__":
    app.run(
        debug=app.config["DEBUG"],
        host=app.config["DB_ADDR"],
        port=app.config["SERVER_PORT"],
       )

在 api/app.py

from flask import Flask
from api.extensions import db
from api.views.views import api_bp


def create_app(config_filename):
    app = Flask(__name__)
    app.config.from_object(config_filename)
    db.init_app(app)
    app.register_blueprint(api_bp, url_prefix="/api")  # localhost/api/
    return app

在 api/extensions.py

 from flask_sqlalchemy import SQLAlchemy
 from flask_marshmallow import Marshmallow
 from flask_migrate import Migrate
 db = SQLAlchemy()
 ma = Marshmallow()
 migrate = Migrate()

在 api/迁移

  from flask_script import Manager
  from flask_migrate import Migrate, MigrateCommand
  from api.extensions import db
  from api.autoapp import app

  migrate = Migrate(app, db)
  manager = Manager(app)
  manager.add_command("db", MigrateCommand)


  if __name__ == "__main__":
       manager.run()

 flask db migrate

Traceback (most recent call last):
  File "C:\Users\Nagaj\python37\lib\runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "C:\Users\Nagaj\python37\lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "D:\containers\learn-projects\flask-projects\messagesAPI\venv\Scripts\flask.exe\__main__.py", line 7, in <module>
  File "d:\containers\learn-projects\flask-projects\messagesapi\venv\lib\site-packages\flask\cli.py", line 967, in main
    cli.main(args=sys.argv[1:], prog_name="python -m flask" if as_module else None)
  File "d:\containers\learn-projects\flask-projects\messagesapi\venv\lib\site-packages\flask\cli.py", line 586, in main
    return super(FlaskGroup, self).main(*args, **kwargs)
  File "d:\containers\learn-projects\flask-projects\messagesapi\venv\lib\site-packages\click\core.py", line 782, in main
    rv = self.invoke(ctx)
  File "d:\containers\learn-projects\flask-projects\messagesapi\venv\lib\site-packages\click\core.py", line 1259, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "d:\containers\learn-projects\flask-projects\messagesapi\venv\lib\site-packages\click\core.py", line 1259, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "d:\containers\learn-projects\flask-projects\messagesapi\venv\lib\site-packages\click\core.py", line 1066, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "d:\containers\learn-projects\flask-projects\messagesapi\venv\lib\site-packages\click\core.py", line 610, in invoke
    return callback(*args, **kwargs)
  File "d:\containers\learn-projects\flask-projects\messagesapi\venv\lib\site-packages\click\decorators.py", line 21, in new_func
    return f(get_current_context(), *args, **kwargs)
  File "d:\containers\learn-projects\flask-projects\messagesapi\venv\lib\site-packages\flask\cli.py", line 426, in decorator
    return __ctx.invoke(f, *args, **kwargs)
  File "d:\containers\learn-projects\flask-projects\messagesapi\venv\lib\site-packages\click\core.py", line 610, in invoke
    return callback(*args, **kwargs)
  File "d:\containers\learn-projects\flask-projects\messagesapi\venv\lib\site-packages\flask_migrate\cli.py", line 92, in migrate
    rev_id, x_arg)
  File "d:\containers\learn-projects\flask-projects\messagesapi\venv\lib\site-packages\flask_migrate\__init__.py", line 96, in wrapped
    f(*args, **kwargs)
  File "d:\containers\learn-projects\flask-projects\messagesapi\venv\lib\site-packages\flask_migrate\__init__.py", line 208, in migrate
    config = current_app.extensions['migrate'].migrate.get_config(
KeyError: 'migrate'

【问题讨论】:

    标签: flask flask-sqlalchemy flask-restful


    【解决方案1】:

    我错过了为应用程序初始化migrate

    使用migrate.init_app(app, db)create_app(config_filename)方法,问题解决了。

    【讨论】:

      猜你喜欢
      • 2019-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多