- 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 |
||
|---|---|---|
| .. | ||
| aufgabe.py | ||
| index.html | ||
| musterloesung.py | ||
| README.md | ||
| test_aufgabe.py | ||
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
- Relationale Datenbanken vs. Einfache Textdateien: Warum relationale Datenbanken (Tabellen, Primärschlüssel, Relationen) für große Datenmengen und gleichzeitigen Zugriff unverzichtbar sind.
- 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).
- 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() - CRUD-Operationen in SQL:
- Create:
CREATE TABLE IF NOT EXISTS ...undINSERT INTO ... - Read:
SELECT ... FROM ... WHERE ... - Update:
UPDATE ... SET ... WHERE ... - Delete:
DELETE FROM ... WHERE ...
- Create:
- Transaktionen & Persistenz: Warum Änderungen erst nach
conn.commit()dauerhaft auf der Festplatte gespeichert werden. - 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 KlasseKundenDatenbank.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