SQLite3 – integrierte SQLite-Datenbankarbeit in Python

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Einführung in SQLite und das sqlite3-Modul

SQLite ist ein kompaktes relationales Datenbankmanagementsystem, das keinen separaten Server benötigt und sich ideal für kleine und mittlere Projekte eignet. In Python wird SQLite über das integrierte Modul sqlite3 unterstützt, sodass Sie ohne zusätzliche Bibliotheken mit Datenbanken arbeiten können.

Das sqlite3-Modul macht das Erstellen und Nutzen von Datenbanken so einfach wie das Arbeiten mit normalen Dateien. Diese Lösung ist besonders wertvoll für Prototyping, eingebettete Systeme, Desktop-Anwendungen und Bildungszwecke.

Installation und Kompatibilität

Das sqlite3-Modul ist ab Python Version 2.5 in der Standardbibliothek enthalten und benötigt keine separate Installation. Es ist vollständig kompatibel mit Windows, macOS und Linux und bietet eine Schnittstelle für SQLite Version 3.

import sqlite3

Verbindung zur Datenbank herstellen

Dateibasierte Datenbank erstellen

conn = sqlite3.connect('meine_datenbank.db')

Wenn die angegebene Datei nicht existiert, wird die Datenbank automatisch erstellt.

Datenbank im Arbeitsspeicher

conn = sqlite3.connect(':memory:')

Diese Variante eignet sich besonders für Tests und temporäre Operationen.

Zusätzliche Verbindungsparameter

conn = sqlite3.connect('datenbank.db', 
                      check_same_thread=False,
                      detect_types=sqlite3.PARSE_DECLTYPES)

Tabellen erstellen und mit dem Datenbankschema arbeiten

Tabellen anlegen

cursor = conn.cursor()
cursor.execute('''
    CREATE TABLE benutzer (
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        name TEXT NOT NULL,
        alter INTEGER,
        email TEXT UNIQUE,
        erstellt_am TIMESTAMP DEFAULT CURRENT_TIMESTAMP
    )
''')
conn.commit()

Datentypen in SQLite

SQLite unterstützt fünf grundlegende Datentypen:

  • INTEGER – ganze Zahlen
  • REAL – Gleitkommazahlen
  • TEXT – Textzeichenfolgen
  • BLOB – Binärdaten
  • NULL – kein Wert

SQLite verwendet dynamische Typisierung, was Flexibilität bietet, aber bei der Datenarbeit Sorgfalt erfordert.

CRUD-Operationen (Create, Read, Update, Delete)

Daten einfügen

# Einzelnen Datensatz einfügen
cursor.execute("INSERT INTO benutzer (name, alter, email) VALUES (?, ?, ?)", 
               ("Max Mustermann", 30, "max@example.com"))

# Mehrere Datensätze einfügen
benutzer_daten = [
    ("Maria Schmidt", 25, "maria@example.com"),
    ("Peter Müller", 35, "peter@example.com"),
    ("Anna Weber", 28, "anna@example.com")
]
cursor.executemany("INSERT INTO benutzer (name, alter, email) VALUES (?, ?, ?)", benutzer_daten)
conn.commit()

Daten abfragen

# Alle Datensätze abfragen
cursor.execute("SELECT * FROM benutzer")
alle_benutzer = cursor.fetchall()

# Abfrage mit Bedingung
cursor.execute("SELECT name, alter FROM benutzer WHERE alter > ?", (25,))
erwachsene_benutzer = cursor.fetchall()

# Abfrage mit Sortierung
cursor.execute("SELECT * FROM benutzer ORDER BY alter DESC")
sortierte_benutzer = cursor.fetchall()

Daten aktualisieren

cursor.execute("UPDATE benutzer SET alter = ? WHERE name = ?", (31, "Max Mustermann"))
conn.commit()

# Anzahl der geänderten Zeilen abrufen
print(f"Aktualisierte Zeilen: {cursor.rowcount}")

Daten löschen

cursor.execute("DELETE FROM benutzer WHERE name = ?", ("Anna Weber",))
conn.commit()
print(f"Gelöschte Zeilen: {cursor.rowcount}")

Empfehlungen