2010년 9월 7일 화요일

MySQL UTF-8

Python 에서 MySQLdb 라이브러를 써서 UTF-8 쿼리를 넣으면 오류가 난다. 서버환경도 UTF-8 클라이언트 환경도 UTF-8 인데도 오류가 나는 것은 MySQLdb 라이브러에서 Mysql 서버에 접속할때에 문자셋을 Latin-1 으로 하기 때문이다. 이를 해결하기 위해서는 MySQLdb 라이브러리에서 제공하는 'set_character_set' 이용해서 접속 문자셋을 교체해주어야 한다.

또 Python 자체 동작 환경을 UTF-8 로도 교체해주어야 정상 동작한다. 다음은 샘플 코드다.

[code python]
#!/bin/env python2.6
# -*- coding: utf-8 -*-

import MySQLdb
import os
from operator import itemgetter


import sys

reload(sys)
sys.setdefaultencoding("utf-8")

dbconnhost = "localhost"
dbconnuser = "root"
dbconnpass = "123456"
dbconndb = "mysql"

conn = MySQLdb.connect(host=dbconnhost, user=dbconnuser, passwd=dbconnpass, db=dbconndb)

conn.set_character_set('utf8')
charset = conn.character_set_name()
print charset
cursor = conn.cursor()

sql = "insert into tbl_mac_addr(sid, mac, add_date) values('192.168.160.98김선일pc2','{alksdjfljsadflj}',now())"

cursor.execute(sql)

[/code]

0 개의 댓글:

댓글 쓰기