[Python] Kein Schreibzugriff auf DB meines Programms nach Installation unter Linux Mint

  • Moin,

    ich habe mit Python ein Programm geschrieben, welches meine eingegebenen Daten in eine sqlite Datenbank speichert. Den Code schreiben tue ich mit VSCode und gepackt habe ich das Ganze mit Pyinstaller und das funktioniert in meinem Benutzerverzeichnis auch wunderbar.

    Jetzt habe ich eine Anleitung gefunden, wie ich daraus ein .deb Datei machen kann um das Programm richtig installieren zu können. Das Programm startet nach der Installation auch und zeigt mir alle Daten aus der Datenbank an. Will ich allerdings Daten speichern bzw aktualisieren, stürzt das Programm mit dieser Fehlermeldung ab:

    Code
    sqlite3.OperationalError: attempt to write a readonly database

    In meinem Benutzerverzeichnis haben alle Dateien und Ordner die Rechte -rwxrwxrwx bzw drwxrwxrwx und das funktioniert. Bei der Installation habe ich die Rechte aus der Anleitung übernommen, da ich davon keine Ahnung habe.

    Das Script für die Installation sieht so aus:

    Ich habe die Suchmaschine meines Vertrauens gefüttert und bin bei Stackoverflow gelandet und nach deren Anleitung die Rechte im Installationsordner neu gesetzt, allerdings ohne Erfolg.

    Das Installationsverzeichnis sieht nun so aus: (data.db ist die Datenbank)

    Hat jemand einen Tip, was ich falsch gemacht habe oder wie ich das lösen kann?

    Zum erstellen der .deb habe ich folgende Anleitung benutzt (hoffe ich darf das hier verlinken):

    Packaging PyQt5 applications for Linux with PyInstaller & fpm

    Ich bin recht neu in Linux und Python also habt bitte Nachsicht wenn ich nicht alles gleich verstehe.

    OS: Linux Mint 20.3 x86_64

    Kernel: 5.4.0-135-generic

    Desktop: Cinnamon

  • Hallo

    Da hast du dir als Einsteiger einiges vorgenommen. ;)

    Fangen wir mal klein an.

    Code
    sqlite3.OperationalError: attempt to write a readonly database

    Hat die Datenbank Schreibzugriff mit dem Ausführen des Scripts?

    Sprich wie wird das Script ausgeführt als root oder als User ?

    fubba

    Einmal editiert, zuletzt von Brander Stier (30. Dezember 2022 um 18:44)

  • Hallo fubba,

    ja da habe ich noch einiges vor mir aber wie heißt es so schön, man wächst mit seinen Aufgaben. :)

    Das Programm wird als User ausgeführt denke ich denn ich starte es über das Startmenu ohne Sudo oder Passworteingabe.

  • Hallo Welpe

    Führe das doch mal als root aus.

    Ich denke das wird zwar in deinem Benutzerverzeichnis funktionieren aber nicht im root.

    Dazu hast du keine Berechtigung.

    Dafür ist auch Python meines Erachtens nicht geeignet.

    Code
    ps -aux | grep python


    Gruss

    fubba

  • Hallo fubba

    Dein Code als root im Benutzerverzeichnis:

    Code
    marko@marko-desktop:~$ sudo ps -aux | grep python
    [sudo] Passwort für marko:      
    root         796  0.0  0.1  40336 20900 ?        Ss   14:34   0:00 /usr/bin/python3 /usr/bin/networkd-dispatcher --run-startup-triggers
    marko       1473  0.0  0.2 315268 39824 ?        Sl   14:34   0:00 /usr/bin/python3 /usr/lib/nvidia-prime-applet/nvidia-prime
    marko       2445  0.0  0.2  60192 35084 ?        S    14:35   0:00 /usr/bin/python3 /usr/share/system-config-printer/applet.py
    marko       6446  0.0  0.0   9412   716 pts/0    S+   14:58   0:00 grep --color=auto python

    Dein Code als root im Rootverzeichnis:

    Code
    marko@marko-desktop:/$ sudo ps -aux | grep python
    [sudo] Passwort für marko:      
    root         796  0.0  0.1  40336 20900 ?        Ss   14:34   0:00 /usr/bin/python3 /usr/bin/networkd-dispatcher --run-startup-triggers
    marko       1473  0.0  0.2 315268 39824 ?        Sl   14:34   0:00 /usr/bin/python3 /usr/lib/nvidia-prime-applet/nvidia-prime
    marko       2445  0.0  0.2  60192 35084 ?        S    14:35   0:00 /usr/bin/python3 /usr/share/system-config-printer/applet.py
    marko       6555  0.0  0.0   9412   716 pts/0    S+   15:01   0:00 grep --color=auto python

    Was bedeutet dein Code bzw was macht er?

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!