Kompletter Leitfaden zu TinyDB: Leichte NoSQL-Datenbank für Python
Einführung
Moderne Anwendungen benötigen nicht immer leistungsstarke und komplexe Datenbanksysteme. Wenn ein Projekt keine Skalierbarkeit oder hohe Verarbeitungsgeschwindigkeit für große Datenmengen erfordert, reicht eine leichte, eingebettete Datenbank völlig aus. TinyDB – eine vollständig in Python geschriebene NoSQL-Datenbank – bietet eine praktische und einfache Lösung zur Speicherung strukturierter Daten ohne SQL.
TinyDB speichert Daten im JSON-Format und benötigt keine Serverinstallation. Das macht sie ideal für Skripte, kleine CLI-Tools, Desktop-Anwendungen, Prototypen und Bildungsprojekte. Die Bibliothek wiegt nur wenige Kilobyte und hat minimale Abhängigkeiten, was sie zu einer ausgezeichneten Wahl für leichte Lösungen macht.
Installation und grundlegende Konfiguration
TinyDB installieren
TinyDB lässt sich mit einem einzigen Befehl über pip installieren:
pip install tinydb
Für zusätzliche Funktionen stehen Erweiterungen zur Verfügung:
pip install tinydb[compression] # Für Datenkomprimierung
pip install tinydb[yaml] # Für YAML-Unterstützung
Datenbank erstellen
Erstellen einer Datenbank mit Dateispeicherung:
from tinydb import TinyDB
db = TinyDB('db.json') # Die Datei wird automatisch erstellt
Erstellen einer Datenbank im Arbeitsspeicher:
from tinydb.storages import MemoryStorage
db = TinyDB(storage=MemoryStorage)
Kodierung und Parameter einstellen
from tinydb import TinyDB
from tinydb.storages import JSONStorage
# Kodierung einstellen
db = TinyDB('db.json', encoding='utf-8')
# JSON-Einrückungen für bessere Lesbarkeit
db = TinyDB('db.json', indent=4, separators=(',', ': '))
Grundlagen der Datenstruktur von TinyDB
TinyDB verwendet ein dokumentenorientiertes Datenmodell:
- Daten werden als Liste von Dokumenten (Python-Dictionaries) gespeichert
- Jedes Dokument hat eine eindeutige, automatisch generierte
doc_id - Unterstützte Typen: Zeichenketten, Zahlen, Listen, Dictionaries, Boolean und Null
- Dokumente können in einer Tabelle unterschiedliche Strukturen haben
- Verschachtelung von Daten in beliebiger Tiefe wird unterstützt
Grundlegende Datenoperationen
Daten einfügen
Einfügen eines einzelnen Dokuments:
from tinydb import TinyDB
db = TinyDB('db.json')
# Einfaches Einfügen
db.insert({'name': 'Max', 'age': 30, 'city': 'Berlin'})
# Einfügen mit Rückgabe der ID
doc_id = db.insert({'name': 'Anna', 'age': 25})
print(f"Dokument mit ID hinzugefügt: {doc_id}")
Mehrere Dokumente einfügen:
users = [
{'name': 'Anna', 'age': 25, 'profession': 'Designerin'},
{'name': 'Peter', 'age': 40, 'profession': 'Programmierer'},
{'name': 'Maria', 'age': 28, 'profession': 'Managerin'}
]
doc_ids = db.insert_multiple(users)
print(f"Dokumente hinzugefügt: {len(doc_ids)}")
Daten lesen
Alle Dokumente abrufen:
all_users = db.all()
print(f"Gesamtanzahl Benutzer: {len(all_users)}")
Dokument nach ID abrufen:
user = db.get(doc_id=1)
if user:
print(f"Benutzer gefunden: {user['name']}")
Suchen und Filtern
Grundlagen der Suche mit Query:
from tinydb import Query
User = Query()
# Suche nach exakter Übereinstimmung
users = db.search(User.name == 'Max')
# Suche mit Bedingung
adults = db.search(User.age >= 30)
# Erstes passendes Dokument abrufen
user = db.get(User.name == 'Anna')
Komplexe Suchbedingungen:
# Logisches UND
young_designers = db.se