Slides Thema 10
Datenbanken
⚡Anwesenheit bestätigen
📖 Kapitel 20 Wissenschaftliche Anwendung
Lernziele
Ich kann ...
- den Begriff Datenbank und relationales Datenbankmanagementsystem erklären.
- mit Python eine SQLite-Datenbankdatei erstellen.
- auf einer SQLite-Datenbank die CRUD-Operationen ausführen.
Grosse Datenmengen
Wie man Text-Daten liest und speichert, wissen wir. Im Umgang mit grossen Datenmengen ergeben Sie neue Fragen:
- Wie speichert man grosse Datenmengen?
- Wie stellt man sicher, dass in den Daten keine Fehler sind?
- Wie ermöglicht man den Zugriff für mehrere Programme auf dieselben Daten?
Daten zentral speichern
Daten in einer Datenbank an einem Ort speichern.
Was ist eine Datenbank?
Eine Datenbank ist ein System zur elektronischen Verwaltung von Daten. Die Kernaufgabe von Datenbanken liegt in der effizienten, dauerhaften und fehlerfreien Speicherung großer Datenmengen sowie in der bedarfsgerechten Bereitstellung benötigter Informationen.
ℹ️ Das Gegenteil einer Datenbank ist Excel.
Datenbanken bereitstellen
Auf einem Server installiert man ein Datenbankmanagementsystem.
Auf dem Desktop kann man direkt auf die Datenbank zugreifen.
Welche Datenbanktypen gibt es?
Grundtypen:
- Relational: Definierte Tabellen und Spalten, Abfragen und Manipulation von Daten nur in diesem Raster möglich.
- NoSQL/Non-Relational: Schema ist freiher, dafür Datenkonsistenz nicht gegeben.
Beispiel Relational/Non-Relational
Relationales Datenbankmanagementsystem
Es gibt verschiedene RDBMS. Wir interessieren uns für PostgreSQL und SQLite.
- PostgreSQL: Komplexes Datenbanksystem, dass auf Server installiert wird.
- SQLite: Ist im wesentlichen eine Datenbankdatei, die überall installiert werden kann.
SQLite
Ist die meist verbreitete Datenbank-Engine^1. Sie ist auf jedem Smartphone vorhanden.
Wie viele andere Datenbanksysteme ist SQLite SQL-basiert. Bei SQL (Structured Query Language) handelt es sich um die am meisten verwendete Datenbanksprache.
Python und SQLite
Mit Python können wir eine SQLite-Datenbank erstellen und bearbeiten. Wir wollen diese Lager-Tabelle erstellen:
ID | Name | Referenz | Barcode | Lager | Preis |
---|---|---|---|---|---|
1 | Holztisch | E-COM06 | 601647855633 | 3 | 147 |
2 | Bürostuhl | FURN_7777 | 601647855634 | 1 | 70.50 |
3 | Abfalleimer | E-COM10 | 601647855649 | 5 | 43 |
Vorgehen
Eine Datenbank wird in den folgenden Schritten erzeugt:
- Anlegen der Datenbank
- Anlegen von Datenbanktabellen durch Angabe der Struktur
- Eingabe der Datensätze in die Datenbanktabellen
Modul und Datentypen
SQLite wird über das Modul sqlite3
direkt in Python eingebunden. Es bietet standardmäßig die folgenden Datentypen:
- TEXT: Für Zeichenketten
- INTEGER: Für ganze Zahlen
- REAL: Für Zahlen mit Nachkommastellen
- BLOB: Für binary large objects, also große binäre Datenmengen
- NULL: Entspricht None in Python
🤔 Wie ordnen Sie die Datentypen der Spalten der Lager-Tabelle zu?
VSCode vorbereiten
🎬 Führen Sie diese Aktionen aus:
- Neuer Ordner
Thema10
erstellen - Ordner mit VSCode öffnen
- Datei
lager.py
anlegen
Datenbank-Datei erzeugen
Aktualisiert die Datei lager.py
mit diesem Code:
import os, sys, sqlite3
# Datei entfernen wenn existiert
if os.path.exists("lager.db"):
os.remove("lager.db")
# Verbindung zur Datenbank erzeugen
connection = sqlite3.connect("lager.db")
# Datensatz-Cursor erzeugen
cursor = connection.cursor()
Tabelle erstellen
🎬 Mit SQL erstellen wir nun eine Tabelle. Fügen Sie diesen Code hinzu:
# Datenbanktabelle erzeugen
sql = """CREATE TABLE lager(
id INTEGER PRIMARY KEY,
name TEXT,
referenz TEXT ,
barcode TEXT,
lager INTEGER,
preis REAL)"""
cursor.execute(sql)
Datensatz hinzufügen
🎬 Fügen Sie diesen Code an, um einen Datensatz zu erzeugen:
# Datensatz hinzufügen
sql = "INSERT INTO lager VALUES(1, 'Holztisch', 'E-COM06', '601647855633', 3, 147)"
cursor.execute(sql)
connection.commit()
# Verbindung beenden
connection.close()
🎬 Führen Sie das Programm lager.py
aus. Es wird nun eine lager.db
Datei erstellt.
Datenbank anschauen
Mit dieser VSCode-Erweiterung können Sie die Datenbank-Datei anschauen:
🎬 Installieren Sie diese Erweiterung.
SQLite Datenbank anschauen
🎬 Zeigen Sie den Inhalt von lager.db
wie folgt an:
- ctrl + shift gedrückt halten und zusätzlich p drücken
- Im Dialog
Open Database
eingeben und Befehl mit Enter bestätigen - Die vorgeschlagene Datenbank auswählen und mit Enter bestätigen
- Unten links erscheint der
SQLite Explorer
, darauf klicken und die Datenbank anzeigen
SQLlite Datenbank anschauen
🎬 Zeigen Sie den Inhalt von lager.db
wie folgt an:
- Rechtsklick auf die Datebank-Datei machen
- Aktion Opten Database wählen.
- Unten links erscheint der
SQLite Explorer
, darauf klicken und die Datenbank anzeigen
Weitere Datensätze einfügen
🎬 Fügen wie weitere Datensätze hinzu, indem Sie den Code unten mit dem bestehenden "Hinzufügen"-Code ersetzen.
# Datensatz hinzufügen
sql = "INSERT INTO lager VALUES(1, 'Holztisch', 'E-COM06', '601647855633', 3, 147)"
cursor.execute(sql)
sql = "INSERT INTO lager VALUES(2, 'Bürostuhl', 'FURN_7777', '601647855634', 1, 70.50)"
cursor.execute(sql)
sql = "INSERT INTO lager VALUES(3, 'Abfalleimer', 'E-COM10', '601647855649', 5, 43)"
cursor.execute(sql)
connection.commit()
# Verbindung beenden
connection.close()
⭐ lager.py
Daten abfragen
Wir möchten die Daten mit SQL/Python auslesen.
🎬 Erstellen Sie eine neue Datei abfragen.py
.
Alle Datensätze anzeigen
🎬 Ergänzen Sie abfragen.py
und führen Sie den Code aus.
import sqlite3
# Verbindung, Cursor
connection = sqlite3.connect("lager.db")
cursor = connection.cursor()
# SQL-Abfrage
sql = "SELECT * FROM lager"
# Absenden der SQL-Abfrage und Empfang des Ergebnis
cursor.execute(sql)
# Ausgabe des Ergebnis
for datensatz in cursor:
print(datensatz[1])
print(datensatz)
# Verbindung beenden
connection.close()
🤔 Wie kann man nur bestimmte Datensätze ausgeben?
Daten filtern
Das Schlüsselwort heisst WHERE
.
🎬 Ersetzen Sie die SQL-Abfrage mit:
sql = "SELECT * FROM lager WHERE id = 1"
ℹ️ SQL hat eine andere Syntax als Python.
🤔 Wie kann man bestimmte Datensätze verändern?
Datensatz verändern
Das Schlüsselwort heisst UPDATE
.
🎬 Ersetzen Sie die SQL-Abfrage mit:
# Datensatz aktualisieren
sql = "UPDATE lager SET preis = 71 WHERE id = 2"
cursor.execute(sql)
connection.commit()
# SQL-Abfrage
sql = "SELECT * FROM lager WHERE id = 2"
🤔 Wie kann man bestimmte Datensätze löschen?
Datensatz löschen
Das Schlüsselwort heisst DELETE
.
🎬 Ersetzen Sie die SQL-Abfrage mit:
# Datensatz löschen
sql = "DELETE FROM lager WHERE id = 3"
cursor.execute(sql)
connection.commit()
# SQL-Abfrage
sql = "SELECT * FROM lager"
CRUD
Wir haben gerade die CRUD-Operationen angewendet:
- C: Create
- R: Read
- U: Update
- D: Delete
Mehr zu SQL
SQL wird von verschiedenen Datenbanksystemen unterstützt.
Wer mehr zu SQL wissen wollt, besucht das SQL Tutorial.
Aufgaben 1
Lösen Sie die Aufgaben 10.1 und 10.2.
⚡Aufteilung in Gruppen/Breakout-Rooms ⏱️ 10 Minuten
Review
🎯 Wurden die Lernziele erreicht?
⚡ Feedback zu den Zielen einholen.