Python und SQLite3

In älteren Artikeln habe ich gezeigt, wie man mit Python CSV-, JSON- oder Excel-Daten lesen kann. In diesem Tutorial geht es nun mit SQLite3 weiter. Ziel ist es eine Tabelle zu erstellen, zu der Daten hinzugefügt werden sollen.

Datenbank erstellen

Zunächst geht es um das Erstellen einer Datenbank mit dem Namen „tutorial.db“.

import sqlite3

# Create a database connection
# (This will create a SQLite3 database called 'tutorial.db'.)
conn = sqlite3.connect('tutorial.db')

Außerdem wird ein Cursor-Objekt benötigt, um SQL-Befehle ausführen zu können. Hierfür steht die Methode cursor() zu verfügung:

cur = conn.cursor()

Mithilfe der kostenlosen Anwendung DB Browser for SQLite kann man eine SQLite3-Datenbank öffnen. Freilich gibt es bisher nicht viel zu sehen, schließlich haben wir noch keine Tabelle angelegt. Dies folgt im nächsten Schritt.

DB Browser für SQLite
Eine leere SQLite-Datenbank

Tabelle erstellen

Die anzulegende Tabelle soll „users“ heißen und über folgende Attribute verfügen:

  • id
  • name
  • age

Dies wird unter Verwendung des SQL-Befehls CREATE TABLE durch folgenden Code umgesetzt:

cur.execute('CREATE TABLE IF NOT EXISTS users(id integer PRIMARY KEY, name text, age real)')
Datenstruktur im DB Browser anzeigen lassen
SQLite-Datenbank mit der Tabelle „users“

Daten in die Tabelle einfügen

Für das Hinzufügen von Daten existiert der SQL-Befehl INSERT INTO. Zu der Tabelle „users“ sollen die id „1“, der Benutzer „Tim“ und das Alter „32“ hinzugefügt werden:

cur.execute('INSERT INTO users VALUES(1, "Tim", 32)')
conn.commit()

Die Methode commit() ist dafür da, alle Veränderungen zu speichern.

Im DB Browser kann man sich unter „Browse Data“ die in der Tabelle vorhandenen Daten anzeigen lassen.

Tabelle im DB Browser anzeigen lassen
Ein Datensatz in der Tabelle „users“

Schließlich kann nach der Ausführung aller SQL-Befehle, die Verbindung zur Datenbank wieder geschlossen werden:

conn.close()

Der vollständige Code lautet nun:

import sqlite3

# Create a database connection
conn = sqlite3.connect('tutorial.db')
cur = conn.cursor()

# Create the table
cur.execute('CREATE TABLE IF NOT EXISTS users(id integer PRIMARY KEY, name text, age real)')

# Insert data
cur.execute('INSERT INTO users VALUES(1, "Tim", 32)')
conn.commit()

# Close the connection
conn.close()

Auf Github findet Ihr das Python-Programm imessage_reader, mit dem die iMessage-Datenbank gelesen werden kann. Anhand des Codes könnt Ihr einen Eindruck davon bekommen, welche Möglichkeiten es gibt, mit Python auf eine SQLite-Datenbank zuzugreifen. Außerdem könnt Ihr den dort gezeigten Code für Eure eigenen Projekte verwenden.

Eine Klasse verwenden

Wir sind aber noch nicht am Ende dieses Tutorials angekommen. Nun wollen wir uns noch ansehen, wie ein objektorientierter Ansatz aussehen könnte. Mit anderen Worten: Die Datenbanklogik soll in einer Klasse, die die Bezeichnung Database hat, gekapselt werden. Dies sieht dann wie folgt aus:

import sqlite3

class Database:
    def __init__(self, db_name):
        self.conn = sqlite3.connect(db_name)
        self.cur = self.conn.cursor()

    def create_table(self):
        self.cur.execute(
            "CREATE TABLE IF NOT EXISTS users(id integer PRIMARY KEY, name text, age real)"
        )

    def insert_data(self, user_id, name, age):
        self.cur.execute("INSERT INTO users VALUES(?, ?, ?)", (user_id, name, age))
        self.conn.commit()

    def close(self):
        self.conn.close()


# Usage
db = Database("tutorial.db")
db.create_table()
db.insert_data(1, "Tim", 32)
db.close()

Zuletzt aktualisiert am 29. Januar 2025

Weiterführende Links