Python Tutorial
- jetzt Python programmieren lernen

Viele Datensätze in Datenbank speichern

Im letzten Kapitel haben wir genau einen neuen Datensatz in unserer SQLite-Datenbank gespeichert. Dazu haben wir folgenden Python-Code erstellt:

import sqlite3
verbindung = sqlite3.connect("datenbank/geburtstage.db")
zeiger = verbindung.cursor()

nachname   = "Schiller"
vorname    = "Friedrich"
geburtstag = "10.11.1759"

zeiger.execute("""
                INSERT INTO personen 
                       VALUES (?,?,?)
               """, 
              (vorname, nachname, geburtstag)
              )

verbindung.commit()
verbindung.close()

Wenn uns allerdings mehrere Daten vorliegen, dann möchten wir diese so effektiv wie möglich in unserer Datenbank speichern können.

Als Erstes benötigen wir die Daten selber. Dazu bieten sich natürlich Listen an. Bisher haben wir einzelne Variablen verwendet, was sehr schnell ab einer gewissen Menge an verschiedenen Variablen sehr unübersichtlich wird. Daher nutzen wir eine Liste, in der wir in einer vorgegebenen Reihenfolge unsere Namen und Geburtstagsdaten abspeichern:

personendaten = ("Heinrich Hermann Robert", "Koch", "11.12.1843")

Diese Liste kann jetzt einfach unsere SQL-Anweisung execute übergeben werden.

personendaten = ("Heinrich Hermann Robert", "Koch", "11.12.1843")

zeiger.execute("""
                INSERT INTO personen 
                       VALUES (?,?,?)
                """, personendaten)

Was passiert aber, wenn wir eine geschachtelte Liste haben – sprich eine Liste mit vielen Personendaten?

beruehmtheiten = [('Georg Wilhelm Friedrich', 'Hegel', '27.08.1770'), 
                  ('Johann Christian Friedrich', 'Hölderlin', '20.03.1770'), 
                  ('Rudolf Ludwig Carl', 'Virchow', '13.10.1821')]

Wenn wir nun die geschachtelte Liste unserer SQL-Anweisung execute übergeben, erhalten wir eine Fehlermeldung:

sqlite3.InterfaceError: Error binding parameter 0 - probably unsupported type.

Geschachtelte Listen per SQL ausführen lassen: executemany

Und jetzt kommt es. Es gibt mehr als die execute-Anweisung. Über die SQL-Anweisung executemany werden auch geschachtelte Listen auf einen Rutsch abgearbeitet.

import sqlite3
verbindung = sqlite3.connect("datenbank/geburtstage.db")
zeiger = verbindung.cursor()

beruehmtheiten = [('Georg Wilhelm Friedrich', 'Hegel', '27.08.1770'), 
                  ('Johann Christian Friedrich', 'Hölderlin', '20.03.1770'), 
                  ('Rudolf Ludwig Carl', 'Virchow', '13.10.1821')]

zeiger.executemany("""
                INSERT INTO personen 
                       VALUES (?,?,?)
                """, beruehmtheiten)

verbindung.commit()

Es muss aber eine geschachtelte Liste sein. Diese kann aber auch nur einen Datensatz enthalten wie im folgenden Beispiel:

personendaten = [("Heinrich Hermann Robert", "Koch2", "11.12.1843")]

Im folgenden Kapitel wollen wir auch mal schauen, was in unserer Datenbank angekommen ist. Dazu lesen wir die Datenbank aus und zeigen die Inhalte an.

Weiterempfehlen • Social Bookmarks • Vielen Dank

Bitte unterstützen Sie dieses Projekt

Sie können dieses Projekt in verschiedenen Formen unterstützen - wir würden uns freuen und es würde uns für weitere Inhalte motivieren :).

Empfehlen Sie es weiter - wir freuen uns immer über Links und Facebook-Empfehlungen.

Das neue E-Book zum Kurs gibt es zum Kaufen.

Sie können uns auch eine Spende über PayPal zukommen lassen.

Bestellen Sie Bücher über folgenden Link bei Amazon:
Bücher über Python

Vielen Dank für Ihre Unterstützung