Eu me deparei com esse mesmo problema ao usar o módulo Python MySQLdb. Como o MySQL permite armazenar praticamente todos os dados binários que você deseja em um campo de texto, independentemente do conjunto de caracteres, encontrei minha solução aqui:
Usando UTF8 com Python MySQLdb
Edit:Cite a URL acima para satisfazer a solicitação no primeiro comentário...
"UnicodeEncodeError:'latin-1' codec não pode codificar caractere ..."
Isso ocorre porque o MySQLdb normalmente tenta codificar tudo para latin-1. Isso pode ser corrigido executando os seguintes comandos logo após você estabelecer a conexão:
db.set_character_set('utf8')
dbc.execute('SET NAMES utf8;')
dbc.execute('SET CHARACTER SET utf8;')
dbc.execute('SET character_set_connection=utf8;')
"db" é o resultado deMySQLdb.connect()
, e "dbc" é o resultado dedb.cursor()
.