Python Tutorial
- jetzt Python programmieren lernen

Löschen von Datensätzen: DELETE FROM

Jetzt wollen wir unseren doppelten Datensatz mit „Goethe“ wieder löschen. Hierzu gibt es die SQL-Anweisung DELETE FROM.

In unserem Beispiel wäre das:

zeiger.execute("DELETE FROM personen WHERE nachname=?", ('Goethe',))

Diese Anweisung müssen wir über commit() „bestätigen“.

Hier der komplette Code mit Anzeige der Datensätze:

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

zeiger.execute("DELETE FROM personen WHERE nachname=?", ('Goethe',))
verbindung.commit()

zeiger.execute("SELECT * FROM personen")
inhalt = zeiger.fetchall()

print(inhalt)

verbindung.close()

Lassen wir es aufführen. Falls eine Fehlermeldung kommt, bitte das Komma nach „('Goethe',)” beachten.

Wir bekommen als Ergebnis angezeigt:

[('Friedrich', 'Schiller', '10.11.1759')]

Ungeschickterweise sind jetzt alle Goethes den Weg der Sterblichen gegangen. Wir haben keinen einzigen mehr in der Datenbank.

Unsere SQL-Anweisung wurde exakt so ausgeführt, wie wir diese geschrieben haben. Lösche alle Personen mit dem Nachnamen „Goethe“, egal wie oft diese Vorkommen und welchen Vornamen diese haben. Wäre eine „Susanne Goethe“ in der Datenbank vorhanden gewesen, wäre auch diese unserem Löschangriff zum Opfer gefallen.

Hier kommt nun ein grundsätzliches Problem in unserem Datenbankdesign zum Vorschein, dass wir in den nächsten Kapiteln angehen müssen.

Bisher haben wir keine Möglichkeit exakt den einen Datensatz auszuwählen, den wir wollen. Wir könnten zwar unsere WHERE-Bedingung noch weiter präzisieren mit Beispielsweise der Angabe von weiteren Feldern:

zeiger.execute("DELETE FROM personen WHERE nachname=?, geburtstag=?", ('Goethe', '28.8.1749'))

Es würden aber weiterhin mehrere Datensätze betroffen sein!

Daher sind DELETE FROM außerordentlich gefährlich. Was passiert wohl bei der Anweisung:

zeiger.execute("DELETE FROM personen")

Korrekt – alles wird gelöscht! Nur doof, wenn wir das eigentlich nicht wollten oder irgendwas schief lief mit der WHERE-Bedingung!

Daher benötigen wir ein exaktes einmaliges Kriterium zum Löschen, damit exakt der eine gewünschte Datensatz gelöscht werden kann.

Dafür brauchen wir zum Verständnis SQL-Grundlagen, die in den folgenden Kapiteln aufgebaut werden.

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.

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