Означает ли использование функциональности, необходимой для взаимодействия с текущим приложением, создание представления в колбе? - PullRequest
0 голосов
/ 03 января 2019

в моем приложении для колб app/__init__.py Я включил следующую функцию

def create_app(config_filename=None):
    _app = Flask(__name__, instance_relative_config=True)
    with _app.app_context():
        print "Creating web app",current_app.name
        cors = CORS(_app, resources={r'/*': {"origins": "*"}})
        sys.path.append(_app.instance_path)
        _app.config.from_pyfile(config_filename)
        from config import app_config
        config = app_config[_os.environ.get('APP_SETTINGS', app_config.development)]
        _app.config.from_object(config)
        register_blueprints(_app)
        # _app.app_context().push()
        return _app

, теперь у меня также есть /app/datastore/core.py, в котором у меня есть

import peewee
import os

from flask import g, current_app
cfg = current_app.config    
dbName = 'clinic_backend'


def connect_db():
    """Connects to the specific database."""
    return peewee.MySQLDatabase(dbName, 
    user=cfg['DB_USER'], 
    host=cfg['DB_HOST'], 
    port=3306, 
    password=cfg['DB_PWD']
    )

def get_db():
    """ Opens a new database connection if there is none yet for the
    current application context.
    """
    if not hasattr(g, 'db'):
        g.db = connect_db()
    return g.db

, когда я создаю свой пробегмое приложение start.py создает объект приложения, но когда я пытаюсь получить доступ к URL-адресу в браузере, я получаю сообщение об ошибке

 File "/Users/ciasto/Development/python/backend/app/datastore/core.py",
 line 31, in get_db
     g.db = connect_db()   File "/Users/ciasto/Development/python/backend/venv/lib/python2.7/site-packages/werkzeug/local.py",
 line 364, in <lambda>
     __setattr__ = lambda x, n, v: setattr(x._get_current_object(), n, v)   File
 "/Users/ciasto/Development/python/backend/venv/lib/python2.7/site-packages/werkzeug/local.py",
 line 306, in _get_current_object
     return self.__local()   File "/Users/ciasto/Development/python/backend/venv/lib/python2.7/site-packages/flask/globals.py",
line 44, in _lookup_app_object
    raise RuntimeError(_app_ctx_err_msg) 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 голосов
/ 09 января 2019

что я здесь не так делаю?

Почти все.

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

Документы peewee являются ОЧЕНЬ ЧИСТЫМИ: http://docs.peewee -orm.com / ru / latest / peewee / database.html # flask

В качестве прочтения прочитайте эти чертовы документы.Сколько вопросов вы уже опубликовали, на которые можно было бы легко ответить, просто прочитав документацию?

...