Python3 – Teil 8 Datenbank Teil 1

Erwartete Lesezeit: 3 minuten

Im ersten Schritt befassen wir uns mit einer SQLite DB, da wir hierfür keinen Datenbankservermieten oder aufsetzen müssen.Für die Nutzung einer SQLite Datenbank benötigen wir 1 bis 2 Imports , je nachdem ob wir vorher im Dateisystem prüfen wollen , ob die Datenbankdatei bereits existiert oder nicht.

Wir gehen jetzt mal davon aus , dass wir in diesem Beispiel jetzt erst prüfen , ob die Datenbank existiert und wenn nicht diese anlegen.

Also benötigen wir die folgenden beiden Imports:

import sqlite3
import os

Die Library SQlite3 ist bereits standardmäßig installiert , sodass wir diese einfach so nutzen könne.
Den Import der Library os benötigen wir nur um zu prüfen , ob die Datenbankdatei vorhanden ist oder nicht.

Um die Datenbank nutzen zu können, muss zum einen die Datenbank Verbindung hergestellt werden und die Datenbankdatei ggf. noch angelegt werden.

Sollte die Datenbankdatei nicht existieren , wird diese bei der Verbindungsherstellung leer erzeugt. Die Tabellen müssen dann noch programmtechnisch erzeugt werden. Aber nur beim ersten Mal. Je nach Umfang der Datenbank, kann man dieses auf zwei Varianten machen.

Wir können die Create Statements für die Tabellen so gestalten, dass die Anlage nur versucht wird , wenn die Tabelle noch nicht existiert.

CREATE_USER_TABLE = "CREATE TABLE IF NOT EXISTS user (userid TEXT PRIMARY KEY , password TEXT , firstname TEXT, surname TEXT, email TEXT )"

Über IF NOT EXISTS checkt das Datenbanksystem vor der Anlage der Tabelle , ob diese bereits existier und legt diese nur bei negativen Prüfungsergebnis an. Hat man aber viele Tabellen, kann dieses einige Zeit dauern. Hier ist es gerade bei SQLite am einfachsten , am Anfang zu prüfen , ob die Datenbankdatei existiert und die Tabellen nur anlegen , wenn die Datei nicht existierte.
Dieses können wir z.B. mittels des folgendem Code machen

        _dbexists=os.path.exists('Test.db')
        self._con = sqlite3.connect('Test.db')
        if (not _dbexists):
            self._createdbTables()

Vor dem Verbindungsaufbau fragen wir mittels der Methode path.exists ab , ob die Datei existiert. Das Ergebnis (true oder false) speichern wir zwischen, um nach dem Verbindungsaufbau die Anlage der Tabellen zu steuern.

Nachdem wir die Datenbankverbindung _con hergestellt haben, können wir nun mittels des folgenden Codes die Tabellen im Bedarfsfall erzeugen. Wir holen uns von der Datenbankverbindung hierzu eine Cursor und über dessen Methode execute legen wir die Tabellen dann mal an.

 CREATE_USER_TABLE = "CREATE TABLE IF NOT EXISTS user (userid TEXT PRIMARY KEY , password TEXT , firstname TEXT, surname TEXT, email TEXT )"
 cur = self._con.cursor()
 cur.execute(self.CREATE_USER_TABLE)

Führen wir den obigen Code aus , sehen wir die Datenbanktabelle in der Datenbank

Python3 – Teil 8 Datenbank Teil 1
Auszug Test.db

Zum Einfügen von Daten können greifen wir nun auch auf den einen Cursor zu und nutzen für das Einfügen einer einzelnen Zeile ebenfalls die Methode execute.

 cur = self._con.cursor()
 cur.execute("INSERT INTO USER(userid, password, firstname, surname, email ) values (?,?,?,?,?)",userdata);
 cur.execute("commit")

Die Userdaten , also die Parameter , übergeben wir als Tuple an die Executemethode und mittels Commit schreiben wir die Daten final in die Tabelle.

Nach der gleichen Methodik können wir nun auch Updates und Deletes machen.

Zu den Abfragen kommen wir dann im nächsten Beitrag.