Datenbankprobleme mit Flask und sqlite

Django, Flask, Bottle, WSGI, CGI…
Antworten
Benutzeravatar
Dirki
User
Beiträge: 69
Registriert: Donnerstag 23. Juni 2016, 16:11

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?
Benutzeravatar
Dirki
User
Beiträge: 69
Registriert: Donnerstag 23. Juni 2016, 16:11

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.
Benutzeravatar
sparrow
User
Beiträge: 4187
Registriert: Freitag 17. April 2009, 10:28

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.
__deets__
User
Beiträge: 14529
Registriert: Mittwoch 14. Oktober 2015, 14:29

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.
Benutzeravatar
Dirki
User
Beiträge: 69
Registriert: Donnerstag 23. Juni 2016, 16:11

Dabei habe ich gerade deswegen die Pfadangabe relativ vergeben. Aber guter Hinweis, ich teste das, danke.
__deets__
User
Beiträge: 14529
Registriert: Mittwoch 14. Oktober 2015, 14:29

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.
Benutzeravatar
Dirki
User
Beiträge: 69
Registriert: Donnerstag 23. Juni 2016, 16:11

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!
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

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'
Benutzeravatar
Dirki
User
Beiträge: 69
Registriert: Donnerstag 23. Juni 2016, 16:11

Danke! Das ist auch ein guter Hinweis! :)
Antworten