2016-11-05 2 views
0

MySQL 테이블에서 데이터를 검색하려고합니다.TypeError : 'long'객체에 MySQL의 '__getitem__'속성이 없습니다.

내 코드

def getData(self, ID): 
    #Load data from MySQL 
query = 'SELECT * FROM goals WHERE ID = "%s"'% (ID) 
     try : 
      cursor.execute(query) 
      data = cursor.fetchone() 
      conn.commit() 
     except Exception as e: 
      raise e 
      data = False 

     if data is not False: 
      for row in data: 
       self.ID = row[0] 
       self.description = row[1] 
       self.imageID = row[2] 
       self.imageLink = row[3] 
       self.Location = row[4] 
       self.status = row[5] 
       self.publishID = row[6] 
       self.goardID = row[7] 
       self.LikesID = row[8] 
       self.createdDate = row[9] 
       self.createdTime = row[10] 
       self.hide = row[11] 
x = newThink() 
print x.create_New() 
print x.goalID, x.subscriptionID, x.LikesID, x.goardID 
see = x.addData('Just the Second', 'Nairobi', 89900845,'http://image.com/789900845') 
print see 

see = x.postData() 
print see 

see = x.getData(x.goalID) 
print see 


print "Now here is the formatted data../n" 
print '........' 
print x.description, x.Location, x.imageID, x.imageLink 

오류 : 형식 오류 : '긴'개체가 어떤 속성 '의 getItem'

이 내가 점점 계속 오류입니다이 없습니다. 튜플을 반환합니다. 그래서 확신 할 수 없습니다.

+0

예외를 발생시키는 행은 무엇입니까? –

답변

0

오류가 발생한 위치를 나타내야합니다. 그러나 나는 추측을 할 수 있습니다 :

data = cursor.fetchone() 
.... 
for row in data: 
    self.ID = row[0] 
    ... 

data는 튜플, 하나 row의 값입니다. for row in data은 해당 튜플을 반복하므로 row은 개별 필드가됩니다. 오류는 row 중 하나가 숫자 인 경우 long임을 나타냅니다.

data = cursor.fetchall()을 사용한 경우에는 rows 개의 데이터가 여러 개 있고 나머지는 작동 할 것입니다.

fetchone으로 붙잡고 for row in data 루프를 건너 뜁니다. data[0] 등을 사용하십시오.

요약하면 data의 구조를 이해해야합니다. 코드가 가정하는 튜플의 목록 (또는 다른 반복 가능한 목록)이 아닐 수도 있습니다.

관련 문제