Seite 1 von 1

listen verarbeiten python

Verfasst: Montag 26. Oktober 2015, 11:20
von köttbullar
Hallo,

ich mache gerade eine DB abfrage und speichere die daten in ein json objekt

Code: Alles auswählen

conn = psycopg2.connect("dbname='test' user='test' host='127.0.0.1' password='test'")
        cur = conn.cursor()
        cur.execute("""
        SELECT
        id
        FROM tabelle
        LIMIT 10
        """)
        test = json.dumps(cur.fetchall())
        print test
als ergebnis erhalte ich folgende 2 dimensionale liste:
[[1], [2], [3], [4], [5], [6], [7], [8], [9], [10]]

für die weiterverarbeitung, bräuchte ich aber folgende list:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

kann mir jemand sagen was ich falsch mache?

vielen Dank

Re: listen verarbeiten python

Verfasst: Montag 26. Oktober 2015, 11:33
von Sirius3
@köttbullar: was falsch ist, ist Deine Erwartung, was fetchall zurückliefert. Verarbeite das Ergebnis von fetchall so, dass es Dein gewünschtes Format ergibt.

Re: listen verarbeiten python

Verfasst: Montag 26. Oktober 2015, 14:15
von köttbullar
und wie mache ich das?

Re: listen verarbeiten python

Verfasst: Montag 26. Oktober 2015, 14:47
von Astorek

Code: Alles auswählen

oldlist = json.dumps(cur.fetchall())
newlist = list()
for array in oldlist:
    for element in array:
        newlist.append(element)
Sollte eigentlich selbsterklärend sein...

EDIT: @Sirius3 unter mir:
Sirius3 hat geschrieben:@Astorek: ... und ziemlich falsch. über einen String zu iterieren und dann nochmal über die einzelnen Zeichen ist wohl nicht, was Du wolltest. Dazu trägt vielleicht auch der falsch gewählte Name "oldlist" für einen String bei.
Huch, das ist ein String? Wusste ich nicht, ich hab mich auf den Hinweis des Threaderstellers verlassen, dass der Befehl eine 2-Dimensionale Liste ausspuckt^^. Danke für die Berichtigung.

Re: listen verarbeiten python

Verfasst: Montag 26. Oktober 2015, 14:55
von Sirius3
@Astorek: ... und ziemlich falsch. über einen String zu iterieren und dann nochmal über die einzelnen Zeichen ist wohl nicht, was Du wolltest. Dazu trägt vielleicht auch der falsch gewählte Name "oldlist" für einen String bei.

@köttbullar: wie man mit Listen arbeitet, solltest Du inzwischen gelernt haben. Du lernst ja nichts dabei, wenn man Dir immer wieder die grundlegendsten Grundlagen vorkaut.

Re: listen verarbeiten python

Verfasst: Montag 26. Oktober 2015, 15:13
von köttbullar
ich will auch nicht alles vorgekaut bekommen.
aber fetchall zu formatieren wie es vorher beschrieben wurde habe ich nichts gefunden.
muss ich da vielleicht fetchall.format() machen?
nach welchen begriffen soll ich da am besten suchen?

Re: listen verarbeiten python

Verfasst: Montag 26. Oktober 2015, 19:19
von Hyperion
Das ``fetchall`` ist so ok, Du musst das Ergebnis in eine Liste transformieren. Dafür wäre der Einsteiger freundliche Weg das Iterieren über das Ergebnis von ``fetchall`` und dann die einzelnen Werte aus den Tupeln (Zeilen) an eine neue Liste "anhängen" (im Englischen "append").

Das sollte man eigentlich auch als Anfänger mit Hilfe des offiziellen Tutorials leicht umsetzen können.

Tipp: Löse das in einer Shell mit einer Dummy Ausgangsstruktur ohne DB Anbindung!

Eleganter wäre ein List Comprehension Ausdruck.

Re: listen verarbeiten python

Verfasst: Montag 26. Oktober 2015, 19:58
von noisefloor
Hallo,

wenn das Endergebnis nicht stimmt, mach' die Zwischenschritte kleiner, um dorthin zu kommen. Heißt z.B. sich einfach mal die Zwischenergebnisse per `print` ausgeben lassen.

Guck' doch einfach mal, wie die Daten in `cur.fetchall()` aussehen. Dann sollte auch der Schritt zur einfachen Liste einfach sein. Stichworte siehe Hyperions Post.

Gruß, noisefloor