Flask OperationalError: Datenbankdatei konnte mit sqlite3 nicht geöffnet werden

8

Ich versuche, eine existierende sqlite3 db an ein Dashboard anzuhängen, das ich gerade erstelle, und ich habe ein Problem, das ich nicht herausfinden kann, wie ich es lösen soll. Ich habe daran gearbeitet, indem ich versucht habe, Dinge aus den Flask-Dokumenten und anderen Quellen zusammenzutragen, also könntest du mich hier anrufen, was etwas seltsam aussieht. Es ist wahrscheinlich, und ich weiß es einfach nicht:)

Code:

%Vor%

Vollständiger Fehler:

  

Traceback (letzter Aufruf zuletzt): Datei   "/usr/local/lib/python2.7/dist-packages/flask/app.py", Zeile 1701, in    Anruf       return self.wsgi_app (environ, start_response) Datei "/usr/local/lib/python2.7/dist-packages/flask/app.py", Zeile 1689, in   wsgi_app       Antwort = self.make_response (self.handle_exception (e)) Datei "/usr/local/lib/python2.7/dist-packages/flask/app.py", Zeile 1687, in   wsgi_app       response = self.full_dispatch_request () Datei "/usr/local/lib/python2.7/dist-packages/flask/app.py", Zeile 1360, in   full_dispatch_request       rv = self.handle_user_exception (e) Datei "/usr/local/lib/python2.7/dist-packages/flask/app.py", Zeile 1356, in   full_dispatch_request       rv = self.preprocess_request () Datei "/usr/local/lib/python2.7/dist-packages/flask/app.py", Zeile 1539, in   Vorverarbeitungsrückfrage       rv = func () Datei "/home/aaron/Dropbox/coding/webapp2/control.py", Zeile   22, in der Voranfrage       g.db = connect_db () Datei "/home/aaron/Dropbox/coding/webapp2/control.py", Zeile   17, in connect_db       return sqlite3.connect (app.config ['DATABASE']) OperationalError: Datenbankdatei konnte nicht geöffnet werden

     

127.0.0.1 - - [13 / Okt. 2012 13:55:48] "GET /?debugger=yes&cmd=resource&f=style.css HTTP / 1.1" 200 -   127.0.0.1 - - [13 / Oct / 2012 13:55:48] "GET /? debugger=yes&cmd=resource&f=jquery.js HTTP / 1.1" 200 -   127.0.0.1 - - [13 / Oct / 2012 13:55:48] "GET /? debugger=yes&cmd=resource&f=debugger.js HTTP / 1.1" 200 -   127.0.0.1 - - [13 / Oct / 2012 13:55:48] "GET /?debugger=yes&cmd=resource&f=console.png HTTP / 1.1" 200 -   127.0.0.1 - - [13 / Oct / 2012 13:55:48] "GET /?debugger=yes&cmd=resource&f=source.png HTTP / 1.1" 200 -   127.0.0.1 - - [13 / Oct / 2012 13:55:49] "GET /favicon.ico HTTP / 1.1" 500 -

     

Traceback (letzter Aufruf zuletzt): Datei   "/usr/local/lib/python2.7/dist-packages/flask/app.py", Zeile 1701, in    Anruf       return self.wsgi_app (environ, start_response) Datei "/usr/local/lib/python2.7/dist-packages/flask/app.py", Zeile 1689, in   wsgi_app       Antwort = self.make_response (self.handle_exception (e)) Datei "/usr/local/lib/python2.7/dist-packages/flask/app.py", Zeile 1687, in   wsgi_app       response = self.full_dispatch_request () Datei "/usr/local/lib/python2.7/dist-packages/flask/app.py", Zeile 1360, in   full_dispatch_request       rv = self.handle_user_exception (e) Datei "/usr/local/lib/python2.7/dist-packages/flask/app.py", Zeile 1356, in   full_dispatch_request       rv = self.preprocess_request () Datei "/usr/local/lib/python2.7/dist-packages/flask/app.py", Zeile 1539, in   Vorverarbeitungsrückfrage       rv = func () Datei "/home/aaron/Dropbox/coding/webapp2/control.py", Zeile   22, in der Voranfrage       g.db = connect_db () Datei "/home/aaron/Dropbox/coding/webapp2/control.py", Zeile   17, in connect_db       return sqlite3.connect (app.config ['DATABASE']) OperationalError: Datenbankdatei konnte nicht geöffnet werden

Es scheint, dass das Problem von dieser Konfigurationszeile kommt:

%Vor%

Meine Fragen:

1) Warum wird der OperationalError zweimal ausgelöst?

2) Warum ruft jeder OperationalError die Zeilen 17 und 22 auf (in meinem obigen Code kommentiert), obwohl dies Funktionsdefinitionen sind und keine Funktionsaufrufe?

3) Wie behebe ich den Fehler, da es sich um eine gültige Datenbank mit Daten im angegebenen Pfad handelt?

Dies ist, was ich verweise:

Ссылка

Zypern

Ссылка

    
acpigeon 13.10.2012, 19:20
quelle

2 Antworten

10

Ich denke, das Problem ist das ~ -Zeichen (gültig in der Shell, aber nicht in Python), also wirst du wahrscheinlich den vollständigen absoluten Pfad schreiben müssen. Ich verwende keinen Flask, aber ich empfehle, die PROJECT_ROOT-Konstante in Ihren Einstellungen festzulegen und dann relative Pfade zu verwenden:

%Vor%     
Bruce 13.10.2012, 19:58
quelle
0

Das hat für mich funktioniert:

Wenn Sie die Datenbank am Anfang definieren, sagen Sie nicht einfach app.database = 'example.db' , stattdessen müssen Sie den Home-Verzeichnispfad mit doppelten Schrägstrichen angeben:
"ex : //var//www//foldername//example.db" Wenn Sie Linux verwenden und den Server erneut starten.

    
Michael Maddha 24.01.2017 21:26
quelle

Tags und Links