2016-02-12 15 views
8

データベースからデータを取り出し、それらを別のリストに割り当てようとしています。 この特定のエラーは私に多くの問題を与えています "TypeError:タプルのインデックスはstrではなく整数でなければなりません" 私はfloatなどに変換しようとしましたが、成功しませんでした。TypeError:タプルのインデックスは、strではなく整数でなければなりません

コードは、print文の

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"]) 

サンプル出力は次のようになり、次のようになります:

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

を、これは私が取得しています正確なエラーです:どんな

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

助けていただければ幸いです!ありがとう!

答えて

8

エラーのように、rowはタプルなので、row["pool_number"]は実行できません。インデックス:row[0]を使用する必要があります。

1

問題はあなたが見つけるfetchall()official-documentationを調べる場合は、ocs[row["pool_number"]]=int(row["waocs"])

row

具体的row["waocs"]row["pool_number"]にアクセスする方法です。

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

したがって、あなたがrow[0]

よう row[__integer__]と行の値にアクセスする必要があります
関連する問題