python.casapython.casa
Home
  • Thema 1 - Einführung Programmiersprache
  • Thema 2 - Variablen und Datentypen
  • Thema 3 - Boolsche Algebra und Zeichenketten
  • Thema 4 - Datum und Zeit
  • Thema 5 - Kontrollstrukturen und Listen
  • Thema 6 - Funktionen und Flowcharts
  • Thema 7 - Objektorientierte Programmierung
  • Thema 8 - Ein- und Ausgabe
  • Thema 9 - Module und Import
  • Thema 10 - Datenbanken
  • Thema 11 - Grafische Benutzeroberfläche
  • Thema 12 - Webapplikation mit Python Flask
  • Thema 13 - Versionskontrolle mit Git
  • Thema 14 - Dokumentation mit Markdown
  • Thema 15 - Jupiter-Notebooks, SciPy und Matplotlib
GitHub
Home
  • Thema 1 - Einführung Programmiersprache
  • Thema 2 - Variablen und Datentypen
  • Thema 3 - Boolsche Algebra und Zeichenketten
  • Thema 4 - Datum und Zeit
  • Thema 5 - Kontrollstrukturen und Listen
  • Thema 6 - Funktionen und Flowcharts
  • Thema 7 - Objektorientierte Programmierung
  • Thema 8 - Ein- und Ausgabe
  • Thema 9 - Module und Import
  • Thema 10 - Datenbanken
  • Thema 11 - Grafische Benutzeroberfläche
  • Thema 12 - Webapplikation mit Python Flask
  • Thema 13 - Versionskontrolle mit Git
  • Thema 14 - Dokumentation mit Markdown
  • Thema 15 - Jupiter-Notebooks, SciPy und Matplotlib
GitHub
  • Stundenplan
  • Teil 1

    • Thema 1 - Einführung Programmiersprache
      • Slides Thema 1
      • Übungen Thema 1
    • Thema 2 - Variablen und Datentypen
      • Slides Thema 2
      • Übungen Thema 2
    • Thema 3 - Boolsche Algebra und Zeichenketten
      • Slides Thema 3
      • Übungen Thema 3
    • Thema 4 - Datum und Zeit
      • Slides Thema 4
      • Übungen Thema 4
    • Thema 5 - Kontrollstrukturen und Listen
      • Slides Thema 5
      • Übungen Thema 5
    • Thema 6 - Funktionen und Flowcharts
      • Slides Thema 6
      • Übungen Thema 6
    • Thema 7 - Objektorientierte Programmierung
      • Slides Thema 7
      • Übungen Thema 7
    • Thema 8 - Ein- und Ausgabe
      • Slides Thema 8
      • Übungen Thema 8
  • Teil 2

    • Thema 9 - Module und Import
      • Slides Thema 9
      • Übungen Thema 9
    • Thema 10 - Datenbanken
      • Slides Thema 10
        • Datenbanken
          • Lernziele
          • Grosse Datenmengen
          • Daten zentral speichern
          • Was ist eine Datenbank?
          • Datenbanken bereitstellen
          • Welche Datenbanktypen gibt es?
          • Beispiel Relational/Non-Relational
          • Relationales Datenbankmanagementsystem
          • SQLite
          • Python und SQLite
          • Vorgehen
          • Modul und Datentypen
          • VSCode vorbereiten
          • Datenbank-Datei erzeugen
          • Tabelle erstellen
          • Datensatz hinzufügen
          • Datenbank anschauen
          • SQLite Datenbank anschauen
          • SQLlite Datenbank anschauen
          • Weitere Datensätze einfügen
          • Daten abfragen
          • Alle Datensätze anzeigen
          • Daten filtern
          • Datensatz verändern
          • Datensatz löschen
          • CRUD
          • Mehr zu SQL
          • Aufgaben 1
          • Review
          • Quellen
      • Übungen Thema 10
    • Thema 11 - Grafische Benutzeroberfläche
      • Slides Thema 11
      • Übungen Thema 11
    • Thema 12 - Webapplikation mit Python Flask
      • Slides Thema 12
      • Übungen Thema 12
    • Thema 13 - Versionskontrolle mit Git
      • Slides Thema 13
      • Übungen Thema 13
    • Thema 14 - Dokumentation mit Markdown
      • Slides Thema 14
    • Thema 15 - Jupiter-Notebooks, SciPy und Matplotlib
      • Slides Thema 15
      • Übungen Thema 15
  • Prüfung

    • Wissensprüfung 1
    • Wissensprüfung 2
    • Leistungsnachweis

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^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:

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.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"

⭐ abfrage.py


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.


Quellen

Edit this page
Last Updated:
Contributors: Janik von Rotz
Next
Übungen Thema 10