Aufgaben-Python/lehrpfad_4_professional_data_engineering/21_datenbanken_und_sqlite
Alex Mueller 2571cb8847 feat(ux): responsive kurs-sidebar und kapitel-drawer für alle 13 kurse & web-ide
- Dynamic Sidebar mit window.COURSES_MANIFEST für 13 Kurse (216 Kapitel)
- Kurswechsler Dropdown mit Direktnavigation
- Fortschrittsanzeige mit Solved-Checkmarks (✓) aus localStorage
- Responsive Off-Canvas Drawer mit Floating Action Button (☰ Kapitel) & Backdrop auf Mobile/Tablets
- Web-IDE Topbar Drawer-Button (☰ Kapitel) für unterbrechungsfreien Vollbild-Editor
- Saubere Bereinigung redundanter statischer Legacy-Sidebars
2026-09-12 13:49:46 +02:00
..
aufgabe.py Erstelle Lehrpfad 4: Python Professional & Data Engineering (Module 17-22: Regex, Functional, Generatoren, Dataclasses, SQLite, REST-APIs) 2026-08-29 23:33:04 +02:00
index.html feat(ux): responsive kurs-sidebar und kapitel-drawer für alle 13 kurse & web-ide 2026-09-12 13:49:46 +02:00
musterloesung.py Erstelle Lehrpfad 4: Python Professional & Data Engineering (Module 17-22: Regex, Functional, Generatoren, Dataclasses, SQLite, REST-APIs) 2026-08-29 23:33:04 +02:00
README.md Erstelle Lehrpfad 4: Python Professional & Data Engineering (Module 17-22: Regex, Functional, Generatoren, Dataclasses, SQLite, REST-APIs) 2026-08-29 23:33:04 +02:00
test_aufgabe.py Erstelle Lehrpfad 4: Python Professional & Data Engineering (Module 17-22: Regex, Functional, Generatoren, Dataclasses, SQLite, REST-APIs) 2026-08-29 23:33:04 +02:00

Kapitel 21: Relationale Datenbanken & SQLite (sqlite3) 🗄️⚡

In diesem Kapitel lernst du, wie du strukturierte relationale Datenbanken mit Pythons eingebautem Modul sqlite3 erstellst, verwaltest und sicher abfragst.


🎯 Was du lernst

  1. Relationale Datenbanken vs. Einfache Textdateien: Warum relationale Datenbanken (Tabellen, Primärschlüssel, Relationen) für große Datenmengen und gleichzeitigen Zugriff unverzichtbar sind.
  2. Die Aktenschrank-Analogie:
    • Datenbankdatei: Der Aktenschrank.
    • Tabelle: Eine Schublade mit Registerkarten.
    • Spalte (Column): Ein vorgegebenes Feld auf der Registerkarte (z.B. Name, E-Mail, Guthaben).
    • Zeile (Row/Record): Eine einzelne ausgefüllte Registerkarte (ein Kunde).
  3. Verbindung & Cursor:
    import sqlite3
    
    conn = sqlite3.connect("kunden.db")  # oder ":memory:" für flüchtige RAM-Datenbank
    conn.row_factory = sqlite3.Row      # Zugriff per Spaltennamen wie im Dict!
    cursor = conn.cursor()
    
  4. CRUD-Operationen in SQL:
    • Create: CREATE TABLE IF NOT EXISTS ... und INSERT INTO ...
    • Read: SELECT ... FROM ... WHERE ...
    • Update: UPDATE ... SET ... WHERE ...
    • Delete: DELETE FROM ... WHERE ...
  5. Transaktionen & Persistenz: Warum Änderungen erst nach conn.commit() dauerhaft auf der Festplatte gespeichert werden.
  6. Sicherheit & SQL-Injection-Schutz: Niemals Strings formatieren (f"SELECT ... {user_input}"), sondern immer Platzhalter (?) verwenden!

📁 Die Dateien in diesem Ordner

  • index.html: Die interaktive Lernseite mit Aktenschrank-Analogie, SQL-Cheat-Sheet, Injection-Demo und Subgoals.
  • aufgabe.py: Dein Arbeitsblatt mit der Klasse KundenDatenbank.
  • test_aufgabe.py: Automatische Unittest-Suite (python3 test_aufgabe.py).
  • musterloesung.py: Vollständig ausprogrammierte Beispiellösung.

🚀 Schnellstart

# 1. Bearbeite aufgabe.py
# 2. Teste deine Lösung:
python3 test_aufgabe.py