«Приложение не найдено. Либо работайте внутри функции просмотра, либо pu sh 'RuntimeError: Приложение не найдено - PullRequest
0 голосов
/ 29 марта 2020

Прежде чем заявить, что это дубликат, я проверил бесчисленные ошибки и не смог найти решение, которое подходит мне.

У меня есть flask веб-приложение, которое я sql Алхимия, чтобы облегчить соединение с моей базой данных Google sql. Мне нужно создать таблицы, соответствующие моему приложению, после создания моего приложения с помощью функции db.create_all (). Однако каждый раз, когда я делаю это, я получаю сообщение об ошибке: «'Приложение не найдено. Либо работайте внутри функции представления, либо pu sh' RuntimeError: Приложение не найдено. Либо работайте внутри функции представления, либо pu sh приложения. context "

Вот код, который у меня сейчас есть. Буду признателен за любую помощь, которую вы сможете предложить:

db = SQLAlchemy()

def create_app():
  app = Flask(__name__)

  app.config.from_object(config)

  db.init_app(app)

  login_manager = LoginManager()
  login_manager.login_view = 'auth.login'
  login_manager.init_app(app)

  from .models import User

  @login_manager.user_loader
  def load_user(user_id):
    return User.query.get(int(user_id))

  from .auth import auth as auth_blueprint
  app.register_blueprint(auth_blueprint)

  from .main import main as main_blueprint
  app.register_blueprint(main_blueprint)

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

  return app

1 Ответ

1 голос
/ 31 марта 2020

Попробуйте заменить

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

на

app.app_context().push()
db.create_all()

Для получения дополнительной информации см. Документы flask_sqlalchemy contexts .

Кстати, Вы используете недавно созданный класс SQLAlchemy, который не знает, какая структура должна применяться к новой БД. Вы должны использовать объект db, созданный с вашими моделями from .models import User, db.

...