Problem mit SQL Querys

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
sprudel
User
Beiträge: 245
Registriert: Donnerstag 8. März 2007, 17:12

Sonntag 13. Mai 2007, 16:55

Hallo.
Ich bekomme folgende Meldung:

Code: Alles auswählen

self.parent.DB.execute("Delete from `demolist` where `id` = ?",(str(self.id)))
sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 1, and there are 4 supplied.
Was hat das für einen Grund? Ich habe doch nur einen einzigen Parameter übergeben? Irgendwie versteh ich das nicht. Hoffe ihr könnt mir weiterhelfen.
Gruß sprudel
querdenker
User
Beiträge: 424
Registriert: Montag 28. Juli 2003, 16:19
Wohnort: /dev/reality

Sonntag 13. Mai 2007, 19:01

Ist in self.id ganz sicher nur die id?

Und es könnte hifreich sein, wenn du den ganzen für den Fehler relevanten Code postest, nicht nur den letzten Befehl, der den Fehler (vermeintlich) erzeugt.

mfg, querdenker
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Sonntag 13. Mai 2007, 19:09

Hi sprudel!

Code: Alles auswählen

self.parent.DB.execute("Delete from `demolist` where `id` = ?",(str(self.id),))
mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
BlackJack

Sonntag 13. Mai 2007, 19:10

Wenn ich mal raten müsste, dann ist die `self.id` eine Zeichenkette mit 4 Zeichen gewesen. Das zweite Argument muss eine Sequenz sein mit sovielen Elementen wie Platzhalter in der SQL-Anweisung stehen. Und eine Zeichenkette ist eine Sequenz von Zeichen.

Pack das eine Element einfach in ein Tupel.

Edit: So wie gerold das gezeigt hat. :-)
sprudel
User
Beiträge: 245
Registriert: Donnerstag 8. März 2007, 17:12

Sonntag 13. Mai 2007, 19:14

Da habt ihr mich ja mal wieder gerettet :-)

Hab natürlich gedacht das wäre ein Tupel.
Vielen Dank
Benutzeravatar
jens
Moderator
Beiträge: 8461
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Montag 14. Mai 2007, 07:44

sprudel hat geschrieben:

Code: Alles auswählen

str(self.id)
Warum machst du das so? Ist self.id nicht eine Zahl? Dann sollte das IMHO auch als Zahl in die DB.

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
sprudel
User
Beiträge: 245
Registriert: Donnerstag 8. März 2007, 17:12

Montag 14. Mai 2007, 11:12

das ID-Feld ist bei mir so eingerichtet dass es auch Wörter enthalten kann, bspsw. 100a

Ich verwende auch kein Auto Increment
Antworten