본문 바로가기
MySql

MySQL pymysql (DictCursor)로 데이터 가져 오기

by 베이스 공부 2020. 12. 6.
반응형

정말 간단한 작업처럼 보이지만 제대로하는 데 어려움이 있습니다.

내 SQL 쿼리는 다음과 같습니다.

self.link = self.db.cursor(pymysql.cursors.DictCursor);
self.link.execute("SELECT * FROM crawler_data WHERE id=%d" % id_crawl)

그리고 다음과 같이 열에 액세스하고 싶습니다.

row = self.link.fetchall()
if row["address"]:
    self.address = self.filterAddress(row["address"])

"list indices must be integers, not str" 오류가 발생합니다.

row 를 인쇄하면 다음 구조가 반환됩니다.

{u'address': 'Address Value', u'domain': 'Domain Value'}

"주소"문자열에 어떻게 액세스합니까?

 

해결 방법

 

위의 경우에는 1 개의 결과 ( WHERE id = : % d ) 만 선택한 다음 address 가 설정되어 있는지 확인하려고했습니다. 이렇게하려면 self.link.fetchall () 을 사용하는 것은 좋지 않습니다. 예를 들어 루프에서 사용할 수있는 모든 결과가 포함 된 목록을 반환하기 때문입니다.

사용할 올바른 함수는 사전 만 반환하는 self.link.fetchone () 입니다. 사용하는 경우 :

row = self.link.fetchone()

그런 다음 사용할 수도 있습니다

print row["key"]

사용하는 경우

row = self.link.fetchall()

그런 다음 사용해야합니다

print row[0]["key"]

 

참조 페이지 https://stackoverflow.com/questions/23151132

 

 

반응형

댓글