Python

pymysql 에러

Jack Moon 2017. 12. 7. 11:28

1. 시스템: CentOS 7 64bit, python3.6

 

2. 상황: pymysql을 사용하여 mysql DB (charset: euckr) 에서 select 를 하는데 캐릭터셋 인식 문제로 특정 글을 가져올때 아래와 같은 에러가 발생한다.

 

Traceback (most recent call last):

  File "./6_2_konlpy_count.py", line 23, in <module>

    cursor.execute(sql)

  File "/usr/lib/python3.6/site-packages/pymysql/cursors.py", line 166, in execute

    result = self._query(query)

  File "/usr/lib/python3.6/site-packages/pymysql/cursors.py", line 322, in _query

    conn.query(q)

  File "/usr/lib/python3.6/site-packages/pymysql/connections.py", line 856, in query

    self._affected_rows = self._read_query_result(unbuffered=unbuffered)

  File "/usr/lib/python3.6/site-packages/pymysql/connections.py", line 1057, in _read_query_result

    result.read()

  File "/usr/lib/python3.6/site-packages/pymysql/connections.py", line 1347, in read

    self._read_result_packet(first_packet)

  File "/usr/lib/python3.6/site-packages/pymysql/connections.py", line 1413, in _read_result_packet

    self._read_rowdata_packet()

  File "/usr/lib/python3.6/site-packages/pymysql/connections.py", line 1451, in _read_rowdata_packet

    rows.append(self._read_row_from_packet(packet))

  File "/usr/lib/python3.6/site-packages/pymysql/connections.py", line 1467, in _read_row_from_packet

    data = data.decode(encoding)

UnicodeDecodeError: 'euc_kr' codec can't decode byte 0x9a in position 3936: illegal multibyte sequence

 
3. 조치: 
/usr/lib/python3.6/site-packages/pymysql/connections.py
 line 1451
data = data.decode(encoding) -> data = data.decode(encoding, 'ignore')

 

 

ubuntu의 경우

/usr/lib/python3/dist-packages/pymysql/connections.py