Slides Thema 10

Datenbanken

◀️ Thema 10

⚡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^1open in new window. 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:

IDNameReferenzBarcodeLagerPreis
1HolztischE-COM066016478556333147
2BürostuhlFURN_7777601647855634170.50
3AbfalleimerE-COM10601647855649543

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

sqlite-browse


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.pyopen in new window


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"

abfrage.pyopen in new window


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 Tutorialopen in new window.


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.


Quellen