2015-12-06 9 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 

こんにちは、このコードはDBクラス内に配置され、私が手にエラーがは、アプリケーションコンテキストの外で働く - フラスコ

RuntimeError: working outside of application context

でエラーが

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

このライン上に発生すると思います問題はグラムであり、このエラーを修正することができますどのようにfrom flask import g

のようにインポートされますか?おかげさまで flask/globals.pyでフラスコのソースコードから

答えて

7

:ドキュメント以下

_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.\ 
''' 

、あなたがあなたのアプリケーションにflask.current_appポイントを確認する必要があり、それが現在はないことがわかります。

おそらくFlaskが初期化される前にDB関数を呼び出すでしょう。あなたのappオブジェクトはまだFlaskコンストラクタで作成されていないと思います。

5

はたぶん、あなたはアプリケーションコンテキスト内であなたの関数を呼び出す作成する必要があります。

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

ERROR:これは通常、あなたが方法で、現在のアプリケーションオブジェクトとのインタフェースに を必要な機能を使用しようとしたことを意味します。 を解決するには、app.app_context()を使用してアプリケーションコンテキストを設定します。詳細については、 のドキュメントをご覧ください。

関連する問題