Hallo,
mein Vorhaben, ich hole mir aus der MySQL Datenbank je nach Filter in
der Query einige User ID´s und möchte das Ergebnis dieser Query nun
Zeilenweise trennen um später damit weiter zu arbeiten.
In diesem Beispiel wird mir nur das letzte Ergebnis angezeigt. Wie kann
ich das aber trennen, dass mir jede User ID in einer eigenen Zeile
ausgeben wird?
David schrieb:> # Das Ergebnis der Abfrage wird mir so ausgegeben> #((1,), (2,), (3,), (4,), (8,), (9,), (10,), (11,), (105,), (106,))
das ist ein tuple von tuples. versuch mal sowas
1
result_names = [x[0] for x in result]
wenn nach den (1,) noch der Username steht also (1, name) dann x[1].
Man sollte sich hier immer fragen, warum man die Daten wieder manuell
trennen muss. In der Datenbank sind sie ja schon nach Zeilen und Spalten
getrennt, also würde ich auch erwarten, dass die Abfrage das so
übernimmt. Tut sie auch!
Was würde außerdem passieren, wenn eines der Werte im result ein ','
enthält?
Was dich hier vermutlich fehlgeleitet hat ist die _str_ methode des
result objects. imonbln hat recht, dass es ein tuple von tuples ist.
Wenn du ein tuple aber mit print ausgibst, dann wird die _str_ methode
des tuples aufgerufen und diese formatiert es dir schön zur besseren
Lesbarkeit mit Kommas und Klammern.
Hallo und Danke für eure Antworten.
ich habe das jetzt so umgesetzt. Ist das eine gängige Form das so zu
machen? Oder ist das der falsche Weg?
Und nein, es werden keine Usernamen ausgelesen. Ausschließlisch di ID´s
David schrieb:> ich habe das jetzt so umgesetzt.
Viel wichtiger als die Umsetzung wäre allerdings ein Verständnis. ;-)
> Ist das eine gängige Form das so zu> machen? Oder ist das der falsche Weg?
Das ist der Weg, den PEP 249 "Python Database API Specification v2.0"
vorsieht und insofern sowohl a) eine der gängigsten Formen als auch b)
Der Richtige Weg (tm). Eine Alternative wäre, einen DictCursor zu
verwenden.