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

हाय इस कोड को डीबी वर्ग के अंदर स्थित है, त्रुटि मैंकाम कर बाहर - बोतल

RuntimeError: working outside of application context

इस लाइन

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

मुझे लगता है कि पर त्रुटि होती है समस्या जी के साथ है, इसे from flask import g

इस त्रुटि को कैसे ठीक किया जा सकता है? धन्यवाद।

उत्तर

7

बोतल स्रोत कोड से 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.\ 
''' 

, आप देख सकते है कि आप अपने आवेदन करने के लिए flask.current_app बिंदु बनाने की जरूरत है और यह वर्तमान में नहीं है।

फ्लास्क प्रारंभ होने से पहले आप शायद अपने डीबी फ़ंक्शन को कॉल कर रहे हैं। मेरा अनुमान है कि आपकी app ऑब्जेक्ट अभी तक Flask कन्स्ट्रक्टर के साथ नहीं बनाई गई है।

5

शायद तुम आवेदन संदर्भ के अंदर अपने फ़ंक्शन को कॉल बनाने की जरूरत:

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

त्रुटि: आमतौर पर इसका अर्थ है कि आप उस जरूरत एक तरह से वर्तमान आवेदन वस्तु के साथ इंटरफेस करने कार्यक्षमता का उपयोग करने का प्रयास किया। को हल करने के लिए यह app.app_context() के साथ एक एप्लिकेशन संदर्भ सेट अप किया गया है। अधिक जानकारी के लिए दस्तावेज़ीकरण देखें।

संबंधित मुद्दे