from pgdb import connect
con = connect(database='postgres', host='localhost:5432', user='postgres', password="ThomasMungo")
cursor = con.cursor()
cursor.execute("select Mutter from Mutter where selber='" + "Root" + "';")
An = cursor.fetchall()
sammel = []
for a in An:
b = str(a)
c = b.split("'")
sammel.append(c[1])
for sam in sammel:
print "We:" + sam
Dieser Code lifert mir aber aus irgendeinem Grund nur die ersten zwei Einträge
Was mach ich falsch
Für jeden Tipp Dankbar
Mungo 1981
Zuletzt geändert von Anonymous am Freitag 30. Dezember 2016, 20:24, insgesamt 1-mal geändert.
Grund:Quelltext in Python-Codebox-Tags gesetzt.
@Mungo1981: Da sind zwei Fehler drin. Zum einen formatiert man keine Werte in SQL-Anweisungen sondern schreibt dafür Platzhalter und übergibt die Werte als zweites Argument von `execute()`.
Und dann wandelt man keine Datenstrukturen in ihre Zeichenkettendarstellung um da dann irgendwie per Zeichenkettenoperationen Werte heraus zu popeln. Arbeite mit den Tupeln oder was auch immer das Datenbankmodul pro Datensatz zurück gibt, und nicht auf deren Zeichenkettendarstellung.
:K Würde ich ja gerne tun,
nur weis ich nicht wie dass dann aussehen würde. :K
Ich bin nach Jahre langer Python Apstinenz eingerostet.
Könntest du mir dabei bitte helfen
@Mungo1981: Das sichere übergeben von Werten steht bereits im Abschnitt „First Steps with PyGreSQL“ in der Dokumentation zu der Datenbankanbindung. Und dort steht auch das die Datenbankzeilen als „named tuple“ zurückgegeben werden. `collections.namedtuple` ist in der Python-Standardbibliothek dokumentiert. Das ist von `tuple` abgeleitet und das sollte grundsätzlich kennen, denn das ist einer der Grunddatentypen in Python, ohne den kaum ein Programm auskommt.