Seite 1 von 1
Datenbankprobleme mit Flask und sqlite
Verfasst: Freitag 4. März 2022, 21:51
von Dirki
Hallo zusammen!
Ich habe ein interessantes Problem, vielleicht kennt ihr das, oder habt eventuell sogar eine Lösung.
Ich entwickel gerade zwei Anwendungen mit Pycharm Professional.
Wenn ich auf meinem Rechner im Büro arbeite synchronisiere ich mit Nextcloud den Code und die Datenbanken und arbeite teilweise von meinem Laptop (Manjaro Linux oder Windows 10) daran weiter.
Interessanterweise ist die Datenbank von meinen Laptop nicht erreichbar. Der Code stimmt, weil im Büro funktioniert alles Problemlos. Lade ich den Code so wie er ist auf einen Gunicorn-Server läuft auch alles, aber nicht vom Laptop. Der Fehler tritt auif 2 Flask-Anwendungen auf, aber niemals bei anderen Anwendungen.
Habt ihr sowas schon gehabt und evtl. gelöst?
Re: Datenbankprobleme mit Flask und sqlite
Verfasst: Freitag 4. März 2022, 21:56
von Dirki
Nachtrag, die Fehlermeldung_
Code: Alles auswählen
File "/home/dirk/Dokumente/Python/eigenes/dms/venv/lib/python3.10/site-packages/flask/app.py", line 2091, in __call__
return self.wsgi_app(environ, start_response)
File "/home/dirk/Dokumente/Python/eigenes/dms/venv/lib/python3.10/site-packages/flask/app.py", line 2076, in wsgi_app
response = self.handle_exception(e)
File "/home/dirk/Dokumente/Python/eigenes/dms/venv/lib/python3.10/site-packages/flask/app.py", line 2073, in wsgi_app
response = self.full_dispatch_request()
File "/home/dirk/Dokumente/Python/eigenes/dms/venv/lib/python3.10/site-packages/flask/app.py", line 1518, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/home/dirk/Dokumente/Python/eigenes/dms/venv/lib/python3.10/site-packages/flask/app.py", line 1516, in full_dispatch_request
rv = self.dispatch_request()
File "/home/dirk/Dokumente/Python/eigenes/dms/venv/lib/python3.10/site-packages/flask/app.py", line 1502, in dispatch_request
return self.ensure_sync(self.view_functions[rule.endpoint])(**req.view_args)
File "/home/dirk/Dokumente/Python/eigenes/dms/app.py", line 129, in index
c.execute(sql, params)
sqlite3.OperationalError: no such table: users
Die Table ist aber definitiv da, auch lt. den Datenbanktool.
Re: Datenbankprobleme mit Flask und sqlite
Verfasst: Freitag 4. März 2022, 22:40
von sparrow
Ich denke nicht, dass das etwas mit Flask zu tun hat. Das ist ein Fehler, der direkt aus sqlite3 kommt. Entweder funktioniert das Synchronisieren nicht, wie du dir das denkst oder du greifst auf eine andere Datenbank zu, als du vermutest.
Re: Datenbankprobleme mit Flask und sqlite
Verfasst: Freitag 4. März 2022, 22:53
von __deets__
Ich wette das ist eine relative Pfadangabe. Und die funktioniert im Büro, weil da das Arbeitsverzeichnis anders eingestellt ist, wahrscheinlich eher aus Gewohnheit. Benutz mal zum Test den vollen Pfad zur DB. Denn SQLite legt einfach eine neue an, wenn es keine findet. Statt einen Fehler zu schmeißen.
Re: Datenbankprobleme mit Flask und sqlite
Verfasst: Samstag 5. März 2022, 09:26
von Dirki
Dabei habe ich gerade deswegen die Pfadangabe relativ vergeben. Aber guter Hinweis, ich teste das, danke.
Re: Datenbankprobleme mit Flask und sqlite
Verfasst: Samstag 5. März 2022, 09:38
von __deets__
Relative Pfade funktionieren relativ zum Arbeitsverzeichnis. NICHT der Python Datei, in der sie stehen. Ich wünschte, Python hätte ein built in dafür. So muss man sich das mit __file__ zusammenschrauben.
Re: Datenbankprobleme mit Flask und sqlite
Verfasst: Samstag 5. März 2022, 21:39
von Dirki
Der Hinweis war aber zielführend, danke dafür. Ich habe einfach mal geguckt, wo er die Datenbank hin kopiert hat. Dahin habe ich einfach die Datenbank kopiert, und jetzt kann ich arbeiten. Damit ist mir sehe geholfen, also nochmal vielen Dank!
Re: Datenbankprobleme mit Flask und sqlite
Verfasst: Montag 14. März 2022, 22:31
von /me
So aufwändig ist das mit __file__ aber auch nicht wirklich.
Code: Alles auswählen
path_to_db = pathlib.Path(__file__).parent / 'data' / 'my.db'
Re: Datenbankprobleme mit Flask und sqlite
Verfasst: Dienstag 15. März 2022, 09:44
von Dirki
Danke! Das ist auch ein guter Hinweis!
