sqlite3: delete

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

sqlite3: delete

Beitragvon Schwarzer Wolf » Sonntag 6. August 2017, 08:44

Ich Grüße Euch :D

Ich habe folgende 'Table' erstellt:

  1. 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:

  1. 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:
  1. 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)
Benutzeravatar
__deets__
User
Beiträge: 2158
Registriert: Mittwoch 14. Oktober 2015, 14:29

Re: sqlite3: delete

Beitragvon __deets__ » Sonntag 6. August 2017, 09:17

Du musst mehrere Bedingungen mit AND verknüpfen.

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

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder