Проблемы с пониманием контекстного менеджера колбы и db.create_all()

#python #flask

Вопрос:

Я пытаюсь создать приложение flask, и у меня возникают проблемы с запуском базы данных. Я не получаю никаких ошибок, но моя база данных не заполняется. Код, который у меня есть в главном __init.py файле, показан ниже:

 from flask import Flask

from extensions import db
from home.routes import home
from search.routes import search


def create_app():
    app = Flask(__name__)

    if app.config["ENV"] == "production":
        app.config.from_object("config.ProductionConfig")
        print("ENV IS SET TO PRODUCTION")

    elif app.config["ENV"] == "development":
        app.config.from_object("config.DevelopmentConfig")

    app.register_blueprint(home)
    app.register_blueprint(search)

    with app.app_context():
        db.init_app(app)
        db.create_all()

    return app

 

Я пытался запустить приложение из командной строки, но всякий раз, когда я импортирую базу данных и выполняю db.create_all() , я просто получаю RuntimeError: No application found. Either work inside a view function or push an application context

Я осмотрелся, и многие люди публикуют app.app_context() решение, но, похоже, оно не работает для моего варианта использования. Я пытаюсь понять, какова цель контекстного менеджера, но у меня возникли некоторые проблемы, и я не знаю, почему база данных не будет создана.

Комментарии:

1. У меня была та же проблема, я использую интерфейс командной строки python, импортировал базу данных и использовал app_context() , и это сработало, я не знаю, как вы работаете, если бы вы дали ссылку на github или что-то еще, может быть, я смогу это понять.