SQLITE3 Tabellen durchsuchen und einträge Löschen

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
phoenixx592
User
Beiträge: 66
Registriert: Sonntag 25. Juni 2017, 16:41

Hallo,
ich würde gerne Tabellen nach einer bestimmten Zeichenkette durchsuchen und diese dann Löschen! Dabei funktionieren leider diese SQL Befehle nicht.

Code: Alles auswählen

cursor.execute("DELETE FROM Obst JOIN Frucht WHERE Variable ='Apfel';")

Code: Alles auswählen

cursor.execute("DELETE FROM Obst AND Frucht WHERE Variable ='Apfel';")

Code: Alles auswählen

cursor.execute("DELETE FROM Obst, Frucht WHERE Variable ='Apfel';")
könnt ihr mir helfen? :P
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

Wie sehen denn Deine Tabellen Obst und Frucht aus? Wie hängen diese beiden Tabellen zusammen? Was willst Du konkret erreichen?
phoenixx592
User
Beiträge: 66
Registriert: Sonntag 25. Juni 2017, 16:41

Ich habe einfach eine Datenbank "Furcht_Obst.db"

dort sehen die Tabellen so aus

Frucht Tabelle:
Name|Größe
---------------------
Apfel|56cm
Birne|39cm


Obst Tabelle:
Name|Größe
---------------------
Apfel|56cm
Kiwi|22cm
Benutzeravatar
snafu
User
Beiträge: 6731
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Nichts für ungut, aber die Daten sehen sehr unrealistisch aus. Ein Apfel mit einem halben Meter Durchmesser? Sicher dass es kein Kürbis ist? ;-)

Im Ernst: Es ist okay, Daten zu anonymisieren, aber wenn du komplett am tatsächlichen Anwendungsfall vorbeischreibst, können wir dir hier nur sehr allgemein helfen und möglicherweise das eigentliche Problem nicht erkennen. Oder es sind wirklich komische Testdaten bei dir...
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

Was ist denn nun der Unterschied zwischen Obst und Frucht? Warum sind die Tabellen identisch?
phoenixx592
User
Beiträge: 66
Registriert: Sonntag 25. Juni 2017, 16:41

Leute das ist nur ein Test, ich hab mir da irgendwas aus dem Finger gesogen.

Mir stellt sich nur die Frage wieso das Modul SQLite3 mir Syntax error beim "AND" oder "Join" oder "," wiedergibt.

Ich möchte doch nur 2 Tabellen durchsuchen und die Variable Apfel löschen wenn sie Vorhanden ist! :mrgreen:
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Weil das halt nicht geht. Hast du dir mal die Grammatik fuer das DELETE-kommando angeschaut?

https://www.sqlite.org/lang_delete.html

Da kannst du genau EINE Tabelle angeben. Keine JOINS. Erst recht kein AND, was auf Tabellen niemals geht, sondern immer nur Spalten (oder Literale) betreffen kann.

Wenn dein Design Mist ist, und du deine Daten wie in einem unaeufgeraeumten Zimmer ueberall verteilst, dann musst du eben auch die Muehe auf dich nehmen, sie in allen Ecken des Zimmers zusammen zu suchen...
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

@phoenixx592: der Test testet halt nicht das, wie man es üblicherweise macht. Also mußt Du schon verraten, was Du vorhast, damit es ein sinnvoller Test werden kann.
Antworten