2015-12-06 13 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 mã này nằm bên trong lớp DB, Các lỗi tôi nhận được làngoài làm việc của bối cảnh ứng dụng - Flask

RuntimeError: working outside of application context

lỗi xảy ra trên đường dây này

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

Tôi nghĩ rằng vấn đề là với g, nó được nhập như thế from flask import g

Lỗi này có thể được sửa? Cảm ơn.

Trả lời

7

Từ mã nguồn Flask trong 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.\ 
''' 

Tiếp theo tài liệu hướng dẫn, bạn có thể thấy rằng bạn cần phải thực hiện flask.current_app điểm để ứng dụng của bạn và nó hiện thì không.

Có thể bạn đang gọi hàm DB của mình trước khi Flask đã khởi tạo. Tôi đoán là đối tượng app của bạn chưa được tạo với hàm tạo Flask.

5

Có lẽ bạn cần phải tạo ra gọi chức năng của bạn trong bối cảnh ứng dụng:

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

LỖI: Điều này thường có nghĩa là bạn cố gắng sử dụng chức năng mà cần để giao tiếp với các đối tượng ứng dụng hiện theo một cách. Để giải quyết , việc này thiết lập ngữ cảnh ứng dụng với app.app_context(). Xem tài liệu để biết thêm thông tin.

Các vấn đề liên quan