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?
Datenbankprobleme mit Flask und sqlite
Nachtrag, die Fehlermeldung_
Die Table ist aber definitiv da, auch lt. den Datenbanktool.
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
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.
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.
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!
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'