arbeiten außerhalb der Anwendung Kontext - Fläschchen
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 dieser code befindet sich innerhalb der DB-Klasse, die Fehler, Die ich bekomme, ist
Absturz mit Laufzeitfehler: arbeiten außerhalb der Anwendungskontext
tritt der Fehler auf dieser Linie
g.sqlite_db = self.connect_db('{}/{}'.format(app.root_path, dbfile))
Ich denke, das problem ist mit g, es ist importiert wie from flask import g
Wie dieser Fehler behoben werden kann?
Danke.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Aus der Flasche-source-code in
flask/globals.py
:Folgenden die Dokumentation können Sie sehen, dass Sie brauchen, um
flask.current_app
Punkt, um Ihre Anwendung, und es derzeit nicht.Sind Sie wahrscheinlich ruft Ihre DB-Funktion vor der Flasche hat initialisiert. Meine Vermutung ist, dass Ihr
app
- Objekt noch nicht angelegt wurde, mit derFlask
Konstruktor.Vielleicht benötigen Sie zum aufrufen Ihrer Funktion innerhalb einer Anwendung Kontext:
Beim erstellen Ihrer app verwenden:
z.B. so:
für weitere Informationen
Erweitern @VadimK Antwort. Wenn Sie verhindern möchten, dass Ihr code ausgeführt wird, außerhalb eines
app_context
können Sie Kolben.has_app_context() um zu sehen, ob der code aktuell in einer app-Kontext:Siehe auch: Kolben.has_request_context()
FEHLER:Diese Regel bedeutet, dass Sie versuchten, Funktionalität zu verwenden, benötigt werden
die Schnittstelle mit der aktuellen application-Objekt in einer Art und Weise. Zu lösen
das einrichten einer Anwendung, die in Zusammenhang mit app.app_context(). Sehen
Dokumentation für weitere Informationen.