Programming/Python

[Python] 파이썬 MySQL사용시 UnicodeEncodeError 해결 방법

쌍쌍바나나 2016. 3. 31. 13:45
반응형

들어가며

  Python과MySQL을 사용해본 사람 중에 Encoding문제를 한번도 겪지 않았다면, 이 글을 읽을 필요가 없습니다. 하지만 이 두개는 쌍으로 encoding문제로 괴롭히는 주범이라고 할 수 있지요. 각각의 설정에 대해서 설명하겠습니다.

MySQL

MySQL에서는 테이블 생성시에 설정을 해주면 됩니다. 테이블의 기본 character 를 utf8로 설정하시면 됩니다. 또는 각 string값이 들어가는 varchar와 같은 변수옆에 character set 'utf8'을 하나씩 해주셔도 됩니다. 

create table `test`.`test` (
`text` varchar(50) character set 'utf8'
) default character set =utf8


Python

  MySQLdb의 connection에 utf8을 세팅하고, query 스트링을 utf8로 encoding 하면된다.
# MySQLdb.connect()의 connection에 utf8을 세팅합니다.
con.query("set character_set_connection=utf8;")
con.query("set character_set_server=utf8;")
con.query("set character_set_client=utf8;")
con.query("set character_set_results=utf8;")
con.query("set character_set_database=utf8;")

# 쿼리를 실행할시에 query string을 'utf8'로 encode
cur.execute(query.encode('utf8'), row.values())


반응형