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}")
Auch in der Bibliothek
Kotlin Task Scheduler: Überblick und Anwendungsbeispiele
Datenvalidierung in C# (.NET): Bibliotheken und Ansätze
Reaktive Programmierung in C++: Bibliotheken und Praxis
HTTP-Client für Kotlin: Die besten Bibliotheken für die Netzwerkarbeit