Seite 1 von 1

sqlite3: delete

Verfasst: Sonntag 6. August 2017, 08:44
von Schwarzer Wolf
Ich Grüße Euch :D

Ich habe folgende 'Table' erstellt:

Code: Alles auswählen

c.execute('CREATE TABLE IF NOT EXISTS base(language_one, language_two, word_one, word_two, priority)')
Dazu habe ich für den 'User' einen Löschbefehl:

Code: Alles auswählen

c.execute('DELETE FROM base WHERE (word_one=?)', (self.word_one_input.get(),))
Meine Frage:
Kann ich das irgendwie noch weiter spezifizieren?

Da es ein 'Fremdwörter Lernprogramm' ist, könnte es sein, dass 'word_one' mehrmals das zu löschende Wort erhält (für andere Sprachen), wo es nicht gelöscht werden soll.

Wenn ich nun probiere, dort noch z.b. 'language_one' und / oder 'language_two' mit reinzunehmen, bekomme ich die Fehlermeldung:

Code: Alles auswählen

c.execute('DELETE FROM base WHERE (language_one=?, word_one=?)', (self.language_one_var.get(), self.word_one_input.get(),))

Code: Alles auswählen

sqlite3.OperationalError: row value misused
Alternativplan wäre, für Sprache und ihre Übersetzung eine eigene 'Table' zu machen. Die Daten von der 'base' würden dann in den jeweiligen Table verschoben, und aus 'base' gelöscht werden.

Vermutlich ist die Alternative aber zu kompliziert geplant, oder?

Wünsche Euch einen angenehmen Sonntag

Re: sqlite3: delete

Verfasst: Sonntag 6. August 2017, 09:17
von __deets__
Du musst mehrere Bedingungen mit AND verknüpfen.

DELETE FROM Tabelle WHERE spalte1 = 'dies' AND spalte2 = 'jenes'