2012-06-18 12 views
13

Estoy desarrollando una aplicación web bastante sencilla usando Flask y MySQL.conjunto de caracteres de conexión de conjunto de PyMySQL

Estoy luchando con Unicode. Los usuarios a veces pegan cosas que copiaron de Word y están cayendo con las viejas citas inteligentes u'\u201c'.

Un poco de investigación muestra que la conexión que tengo con MySQL está usando el juego de caracteres Latin1 (parece ser el predeterminado).

¿Cómo puedo especificar que utilice unicode para su conexión?

Estoy usando pyMySQL, que pretende ser un reemplazo directo para MySQLdb. MySQLdb define una función set_character_set(self, charset) para objetos connection, pero pyMySQL no (obtengo un error si lo intento).

+0

Puede intentar una consulta sin procesar para cada conexión que haya indicado 'SET NAMES UTF8' –

Respuesta

46

Lo resolví hurgando en el pyMySQL source (lo había intentado pero no pude encontrar el lugar correcto).

Puede especificar que cuando se crea la conexión:

conn = pymysql.connect(host='localhost', 
         user='username', 
         passwd='password', 
         db='database', 
         charset='utf8') 

resuelto mi problema.

+2

Estaba tratando de usar pymysql con sqlalchemy, por lo que la solución para mí fue cambiar la url a' mysql + pymysql: // user_name @ host_name/database_name? charset = utf8mb4'; ¡esta respuesta ayudó mucho! –

Cuestiones relacionadas