2016-02-12 18 views
8

मैं डेटाबेस से डेटा खींचने और उन्हें अलग-अलग सूचियों में असाइन करने की कोशिश कर रहा हूं। यह विशिष्ट त्रुटि मुझे बहुत परेशानी दे रही है "TypeError: tuple सूचकांक पूर्णांक होना चाहिए, न कि str" मैंने इसे फ्लोट और आदि में बदलने की कोशिश की, लेकिन कोई सफलता नहीं मिली।टाइपरर: टुपल इंडेक्स पूर्णांक होना चाहिए, स्ट्र

कोड नीचे प्रिंट बयान के

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

समस्या है आप कैसे का उपयोग row

विशेष रूप row["waocs"] और ocs[row["pool_number"]]=int(row["waocs"])

की row["pool_number"] यदि आप fetchall() की official-documentation आप पाते हैं को देखने के लिए है।

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

इसलिए आप row[0]

तरह row[__integer__] साथ पंक्तियों के मूल्यों का उपयोग करना
संबंधित मुद्दे