RuntimeError: приложение не найдено - PullRequest
0 голосов
/ 31 декабря 2018

Я создаю объект Python, который все статические данные в БД.Я хотел бы иметь один экземпляр этого в Приложении, к которому я могу получить доступ, используя переменную «import».В коде у меня происходит несколько запросов к БД, но как только я использую "country.query.all ()", я получаю ошибку времени выполнения.

Я пытался использовать с app.app_context () только для того, чтобы получить сообщение «Ошибка: ошибка импорта: невозможно импортировать имя« api »из« App.api.routes »Редактировать: я использую синие отпечатки, поэтомувы увидите App.api.routes

getinfo.py  
       def create():
    class Country:
        def __init__(self,id, name,iso):
            self.id= id
            self.name = name
            self.iso = iso
            self.providers = get_providers_by_id(id)

    class Provider:
        def __init__(self, id, name):
            self.id = id
            self.name = name
            self.products = get_product_by_id(id)


    b = []

    countries = country.query.all()

    for row in countries:

        b.append(Country(row.id, row.name,row.iso))


    return b
items = create()



routes.py
    From App.getinfo import items

Error: RuntimeError: No application found. Either work inside a view function or push an application context. countries = country.query.all()


getinfo.py (changes to try to fix)
app = create_app()
with app.app_context():
   items= create()  

Error: ImportError: cannot import name 'api' from 'App.api.routes'

Я надеюсь, что эта проблема не возникнет, и у меня будет возможность использовать переменную "items" в качестве экземпляра в моих маршрутах.

Редактировать # 2: пробовал с помощью current_app

getinfo.py (Try to fix #2)
from flask import current_app

with current_app.app_context():
   test = create()
RuntimeError: Working outside of application context.

This typically means that you attempted to use functionality that needed
to interface with the current application object in some way. To solve
this, set up an application context with app.app_context().  See the
documentation for more information.

1 Ответ

0 голосов
/ 31 декабря 2018

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

Вы правильно использовали контекст приложения, однако лучше использовать current_app вместо повторного создания нового приложения:

from flask import current_app

...