remove many init_app binds python mysql unicode encoding sqlalchemy

python - many - SQLAlchemy y UnicodeDecodeError



sqlalchemy oracle (1)

Me estoy poniendo

UnicodeDecodeError: ''ascii'' codec can''t decode byte 0xc2 in position 0: ordinal not in range(128)

cuando paso el texto proveniente de una base de datos MySQL, a la que estoy accediendo usando SQLAlchemy, a esta función:

re.compile(ur"<([^>]+)>", flags=re.UNICODE).sub(u" ", s)

La codificación de la base de datos es utf-8 e incluso estoy pasando la codificación a la función create_engine de SQLAlchemy.

Editar: Así es como estoy consultando la base de datos:

doc = session.query(Document).get(doc_id) s = doc.title

Por sugerencia, pasé s.decode (''utf-8'') a sub . El error anterior desapareció, pero recibo un error diferente para un documento diferente:

UnicodeDecodeError: ''utf8'' codec can''t decode byte 0xeb in position 449: invalid continuation byte

La tabla de la base de datos se define así:

CREATE TABLE `articles` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `title` varchar(255) DEFAULT NULL, `cdate` datetime DEFAULT NULL, `link` varchar(255) DEFAULT NULL, `content` text, UNIQUE KEY `id` (`id`), UNIQUE KEY `link_idx` (`link`) ) ENGINE=InnoDB AUTO_INCREMENT=4127834 DEFAULT CHARSET=utf8;

Cualquier ayuda sería muy apreciada


He resuelto el problema SQLAlchemy devolvió la columna de title como str y no como Unicode . Pensé que agregar encoding=''utf8'' como argumento para create_engine se encargaría de esto, sin embargo, la forma correcta de hacerlo es pasarlo en el URI de la base de datos: mysql://me@myserver/mydatabase?charset=utf8 .

¡Gracias por todas tus respuestas!