2016-02-12 21 views
8

Ich versuche, Daten aus einer Datenbank zu ziehen und sie verschiedenen Listen zuzuweisen. dieser spezifische Fehler gibt mir eine Menge Ärger "TypeError: Tuple-Indizes müssen ganze Zahlen sein, nicht str" Ich versuchte, es in float und etc, aber zu keinem Erfolg zu konvertieren.TypeError: Tuple-Indizes müssen ganze Zahlen sein, nicht str

der Code geht, wie unten

conn=MySQLdb.connect(*details*) 
cursor=conn.cursor() 
ocs={} 
oltv={} 
query="select pool_number, average_credit_score as waocs, average_original_ltv as waoltv from *tablename* where as_of_date= *date*" 
cursor.execute(query) 
result=cursor.fetchall() 

for row in result: 
print row 
ocs[row["pool_number"]]=int(row["waocs"]) 
oltv[row["pool_number"]]=int(row["waoltv"]) 

Beispielausgabe von print-Anweisung lautet wie folgt:

('MA3146', 711L, 81L) 
('MA3147', 679L, 83L) 
('MA3148', 668L, 86L) 

und dies ist die genauen Fehler ich erhalte:

ocs[row["pool_number"]]=int(row["waocs"]) 
TypeError: tuple indices must be integers, not str 

jede Hilfe wäre willkommen! Danke Leute!

Antwort

8

Wie der Fehler sagt, row ist ein Tupel, so dass Sie nicht tun können. Sie müssen den Index verwenden: row[0].

1

Das Problem ist, wie Sie row

Insbesondere row["waocs"] und row["pool_number"] von ocs[row["pool_number"]]=int(row["waocs"])

zugreifen Wenn Sie die official-documentation von fetchall() Sie finden nachschlagen.

The method fetches all (or all remaining) rows of a query result set and returns a list of tuples.

Deshalb müssen Sie die Werte der Zeilen Zugriff mit row[__integer__] wie row[0]

Verwandte Themen