sqlite3: delete

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
Benutzeravatar
Schwarzer Wolf
User
Beiträge: 56
Registriert: Donnerstag 5. Januar 2017, 05:24

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
Wer in der Wildnis lebt, muss zum Wolf werden, oder als Schaf sterben.
(Syrisches Sprichwort)
__deets__
User
Beiträge: 14522
Registriert: Mittwoch 14. Oktober 2015, 14:29

Du musst mehrere Bedingungen mit AND verknüpfen.

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