Seite 1 von 1

sql abfrage

Verfasst: Dienstag 10. Mai 2011, 13:32
von The Hit-Man
ich sitze hier an einer komischen Sache, an einer sql Abfrage, hier erst mal mein Snipe:

Code: Alles auswählen

... where id=?""", daten_id)
diese Abfrage funktioniert so lange, bis daten_id noch keine 10 erreicht hat, denn dann bekomme ich eine Meldung, die besagt, das ich mehr als einen Wert an die sql Abfrage sende.
Wenn ich mir die daten_id per print ausgeben lasse, steht dort auch eine 10 drin, so wie es auch sein soll.
Dann dachte ich mir, ich mache die 10 einfach mal zum testen, fest in die Abfrage rein:

Code: Alles auswählen

... where id=10""")
und siehe da, das funktioniert. Warum aber nicht mit der ersten Version, also das Beispiel oben ???

Re: sql abfrage

Verfasst: Dienstag 10. Mai 2011, 13:38
von Hyperion
Du musst ein Tupel übergeben!

Code: Alles auswählen

cursor.execute("select foo from bar where x=?", (var,))
Wieso es allerdings mit falscher Semantik funktioniert haben soll, kapiere ich nicht.

Re: sql abfrage

Verfasst: Dienstag 10. Mai 2011, 13:51
von The Hit-Man
danke sehr, genau das wars !!!
ja, es geht ohne Tupel. Ich denke ich werde das in meinen anderen Abfragen dann auch mal schnell ändern. Man lernt nicht aus.

Re: sql abfrage

Verfasst: Dienstag 10. Mai 2011, 14:08
von BlackJack
Ich würde mal vermuten, dass Du eine Zeichenkette übergeben hast. Und die *Zeichenkette* '10' ist zwei Elemente lang, während Zeichenketten mit einem Zahlenwert <10 nur ein Element enthalten.

Re: sql abfrage

Verfasst: Dienstag 10. Mai 2011, 14:14
von The Hit-Man
Genau das habe ich auch vermutet.
Allerdings in manchen Abfragen, habe ich nur ein Dictionary üebrgeben. Das ging auch.

Re: sql abfrage

Verfasst: Dienstag 10. Mai 2011, 14:21
von Hyperion
Steht ja auch in der Doku beschrieben: http://docs.python.org/library/sqlite3. ... or-objects

Re: sql abfrage

Verfasst: Dienstag 10. Mai 2011, 16:35
von The Hit-Man
Sehr komisch, ich hatte das nicht gefunden.