In Array abspeichern

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
erdmulch
User
Beiträge: 230
Registriert: Samstag 17. Juli 2010, 19:50

Hallo Python Forum,

wie man dem Programmcode entnehmen kann, mach ich eine kleine Datenbank Abfrage.
Allerdings ist dies sehr unübersichtlich, bzw. man könnte dies alles schön in eine Schleife bzw. in einen Array packen.
Die Ergebnisse E1, E2, E3, E4 werden natürlich weiter verarbeitet.
meine frage ist nun, wie kann ich einen Array erstellen, damit ich nachher die Ergebnisse E1, E2, E3 und E4 weiterverarbeiten kann?

Code: Alles auswählen

           
           cur.execute("Select State FROM SPS where ID = 1")         
            rows = cur.fetchall()
            E1 = rows[0][0]
            cur.execute("Select State FROM SPS where ID = 2")         
            rows = cur.fetchall()
            E2 = rows[0][0]
            cur.execute("Select State FROM SPS where ID = 3")         
            rows = cur.fetchall()
            E3 = rows[0][0]
            cur.execute("Select State FROM SPS where ID = 4")         
            rows = cur.fetchall()
            E4 = rows[0][0]           

mein erster Gedanke war diese:

Code: Alles auswählen

while i <= 4:
    i = i+1
    y = y+1
    cur.execute("Select State FROM SPS where ID=%s",str(y))         
    rows = cur.fetchall()
    E[i] = rows[0][0]
    print E1
    print E2
    print E3
    print E4


Leider funktioniert das nicht, kann mir jemand sagen wie man es richtig macht?

vielen Dank im voraus
BlackJack

@erdmulch: Wie man eine Liste erstellt und dort Elemente anhängt sind eigentlich Grundlagen. In der Python-Dokumentation gibt's ein Tutorial.

Bei dem speziellen Beispiel würde ich aber auch nur eine SQL-Abfrage schreiben die alle vier Datensätze abfragt.
Benutzeravatar
darktrym
User
Beiträge: 784
Registriert: Freitag 24. April 2009, 09:26

Noch ein Hinweis von mir. Sollte dein Kaffee in nächster Zeit komisch schmecken, wundere dich nicht. Man greift nicht auf die Spalten der Antwort via Index zu, das erzeugt nur schwer les- & wartbaren Code. Gott erschuf dafür das Dictionary.
„gcc finds bugs in Linux, NetBSD finds bugs in gcc.“[Michael Dexter, Systems 2008]
Bitbucket, Github
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

@erdmulch: das was Du machst ist in mehrerlei Hinsicht sehr unüblich. IDs in Datenbanken sind normalerweise abstrakte Zahlen, die keine andere Information enthalten, als einen Datensatz eindeutig zu beschreiben. Es macht also keinen Sinn den Datensatz mit ID 1 oder 2 explizit zu selektieren. Wenn es genau einen Datensatz gibt, ist fetchone einem fetchall vorzuziehen.
Antworten