MySQLdb findet Datensatz nicht -> Bug?

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
Benutzeravatar
Michael Schneider
User
Beiträge: 567
Registriert: Samstag 8. April 2006, 12:31
Wohnort: Bremen
Kontaktdaten:

Donnerstag 31. Juli 2008, 16:30

Hallo Leute,

ich bin heute über einen sehr merkwürdigen Umstand gestolpert. Ich habe folgende Query:
select uid, parts, state from Current where parts like "%xxxxxxxxxx%" order by uid;
wobei die x-chars für eine Partnummer stehen.
Ich brauche alle Datensätze, in denen die Partnummer irgendwo im Feld parts enthalten ist.

Wenn ich die Query mit einem bestimmten Partnamen über den interaktiven Mysql-Modus ausführe, erhalte ich 3 Datensätze.
Aber wenn ich sie über die MySQLdb Schnittstelle ausführe, bekomme ich nur zwei Datensätze. Und genau dieser 3. war der Gesuchte, aufgrund dessen Abwesenheit ich auf den Umstand überhaupt aufmerksam wurde.

Habe ich etwas falsch gemacht?
Kennt jemand dieses Problem und evtl. eine Lösung?

Vielen Dank für die Mühe,
Michael
Diese Nachricht zersört sich in 5 Sekunden selbst ...
Pekh
User
Beiträge: 482
Registriert: Donnerstag 22. Mai 2008, 09:09

Donnerstag 31. Juli 2008, 20:16

Kannst du den Code zeigen, mit dem du durch die Ergebnisse gehst? Moeglicherweise wird dort etwas ausgelassen. Ansonsten koennten die '%'-Zeichen problematisch sein, aber wenn du zwei von drei moeglichen erhaelst ... weiss ich nicht recht.
Benutzeravatar
Michael Schneider
User
Beiträge: 567
Registriert: Samstag 8. April 2006, 12:31
Wohnort: Bremen
Kontaktdaten:

Freitag 1. August 2008, 07:22

Moin Pekh,
Pekh hat geschrieben:Kannst du den Code zeigen, mit dem du durch die Ergebnisse gehst? Moeglicherweise wird dort etwas ausgelassen.
Das kann ich gern machen. Aber diese Ursache kann ich ausschließen, da schon das Tupel, das ich vom Cursor-Objekt bekomme, nur zwei Elemente enthält. Dazu muss ich sagen, dass ich Dict-Cursor verwende, die ja in gewisser Form auch nachbearbeitet sind. Muss das mal mit den originalen Cursor-Objekten testen.

Danke für den Tipp, vielleicht gibt es ja noch Rettung. Momentan gefährdet dieser Umstand die Integrität meiner ganzen Anwendung. :-(

Gruß,
Michael
Diese Nachricht zersört sich in 5 Sekunden selbst ...
Benutzeravatar
jens
Moderator
Beiträge: 8483
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Freitag 1. August 2008, 09:02

Ist es evtl. ein escape Problem?
Wie übergibst du denn den like wert?

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
Michael Schneider
User
Beiträge: 567
Registriert: Samstag 8. April 2006, 12:31
Wohnort: Bremen
Kontaktdaten:

Freitag 1. August 2008, 09:13

Vielen Dank für eure Mühe - aber das Problem saß mal wieder vor dem Bildschirm!

Ich habe die Datenbank vor kurzem umgezogen (alte Version existiert noch), aber die Logins nicht auf die neue DB umgeschrieben. Deshalb hat er den neuesten Eintrag nicht gefunden. Asche auf mein Haupt.

Übrigens, die abgebildete Query war die Bildschirmausgabe des an cursor.execute übergebenen Querystrings. Aber das tut ja nun nichts mehr zur Sache. :D

Es freut mich immer wieder zu sehen, wie schnell und hilfsbereit man hier anderen bei ihren Problemen hilft. Weiter so!

Grüße
Michel
Diese Nachricht zersört sich in 5 Sekunden selbst ...
Antworten