Python에서 MySQL의 DB결과를 가져올 때
cursor.fetchall()를 사용하면 MySQL결과는 보통 리스트(list) 타입으로 가져오게 되서 쿼리에서 선택한 컬럼의 번호를 주고 꺼내와야 합니다.
컬럼이 몇개 안되면 괜찮지만 컬럼이 많거나 쿼리가 복잡하면 꺼내와서 짝을 맞추는 것이 어려우니 딕셔너리 타입으로 받으며 좋습니다.
보통은 다음과 같이 하지만
1 2 3 4 5 6 7 |
rows = cursor.fetchall() for row in rows: id = row[0] name = row[1] print(id, name) |
딕셔너리로 사용하기는 다음과 같이 쓰는 것을 말합니다.
1 2 3 4 5 6 7 |
rows = cursor.fetchall() for row in rows: id = row['id'] name = row['name'] print(id, name) |
다음과 같이 cursor를 생성할 때 옵션을 지정하면 쓸 수 있습니다.
1 2 3 4 5 6 |
import pymysql connection = pymysql.connect(db="test") cursor = connection.cursor(pymysql.cursors.DictCursor) cursor. Execute("SELECT ...") |
위의 단점은 데이터를 가져올 때 딕셔너리에 키를 다 넣으므로 데이터의 사이즈가 커진다는 것입니다 경우에 따라서 복잡하더라도 필드의 순번으로 데이터를 꺼내오는 것이 나은 경우가 있습니다.
무분별하게 사용하지 않도록 고민은 한 번 해야합니다.