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!