2013-12-10 4 views
2

MySQL 데이터베이스가 UTF-8로 인코딩되어 있지만 SQLAlchemy (Python 2.7)로 연결할 때 Latin1 Unicode 문자가있는 문자열이 반환됩니다.SQLAlchemy Latin1 문자열로 UTF-8 반환

그래서, 벨기에 (België)의 네덜란드 맞춤법

'Belgi\xeb' 

보다는

'Belgi\xc3\xab' 

또는, 이상적으로 유니 코드 개체로 나오는

u'Belgi\xeb' 

답변

5

(문서에 따르면, http://docs.sqlalchemy.org/en/rel_0_9/core/engines.html#custom-dbapi-args) :

use_unicode = 1 매개 변수 또는 charset 매개 변수가 연결 인수로 전달되면 MySQLdb는 Python unicode 객체를 수용합니다.

이 설정을 지정하지 않으면 많은 MySQL 서버 설치가 클라이언트 연결을위한 latin1 인코딩으로 기본 설정됩니다.

당신은

create_engine('mysql+mysqldb://HOSTNAME/DATABASE') 
보다는

create_engine('mysql+mysqldb://HOSTNAME/DATABASE?charset=utf8') 

를 사용할 필요가