2015-12-06 12 views
5
def get_db(self,dbfile): 
    if hasattr(g, 'sqlite_db'): self.close_db(g.sqlite_db) 
    try: 
     g.sqlite_db = self.connect_db('{}/{}'.format(app.root_path, dbfile)) 
    except sqlite3.OperationalError as e: 
     raise e 

    return g.sqlite_db 

Hi questo codice si trova all'interno della classe DB, L'errore che ottengo èlavoro al di fuori del contesto applicativo - Flask

RuntimeError: working outside of application context

l'errore si verifica su questa linea

g.sqlite_db = self.connect_db('{}/{}'.format(app.root_path, dbfile)) 

penso che il problema è con g, è importato in quel modo from flask import g

Come si può risolvere questo errore? Grazie.

risposta

7

Dal codice sorgente Flask in flask/globals.py:

_app_ctx_err_msg = '''\ 
Working outside of application context. 

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

In seguito la documentazione, si può vedere che è necessario fare flask.current_app punto alla propria applicazione e al momento non lo fa.

Probabilmente stai chiamando la funzione DB prima dell'inizializzazione di Flask. La mia ipotesi è che il tuo oggetto app non sia stato ancora creato con il costruttore Flask.

5

Forse è necessario creare chiamare la funzione all'interno contesto di applicazione:

with app.app_context(): 
    # call your method here 
-2

ERRORE: Questo significa in genere che si è tentato di utilizzare la funzionalità che aveva bisogno per interfacciarsi con l'oggetto applicazione corrente in un certo senso. Per risolvere , impostare un contesto applicativo con app.app_context(). Vedere la documentazione per ulteriori informazioni.

Problemi correlati