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