Tengo un proyecto Django que utiliza una base de datos SQLite que se puede escribir a por una herramienta externa. Se supone que el texto es UTF-8, pero en algunos casos habrá errores en la codificación. El texto proviene de una fuente externa, por lo que no puedo controlar la codificación. Sí, sé que podría escribir una "capa de envoltura" entre la fuente externa y la base de datos, pero prefiero no tener que hacerlo, especialmente porque la base de datos ya contiene muchos datos "malos".Cambio text_factory en Django/sqlite
La solución en SQLite es cambiar el text_factory a algo como: lambda x: unicode(x, "utf-8", "ignore")
Sin embargo, no sé cómo decirle al conductor de este modelo de Django.
La excepción que recibo es:
'Could not decode to UTF-8 column 'Text' with text' in /var/lib/python-support/python2.5/django/db/backends/sqlite3/base.py in execute
De alguna manera tengo que decirle al conductor sqlite no intentar decodificar el texto como UTF-8 (al menos no usando el algoritmo estándar, pero es necesario usar mi variante a prueba de fallas).
¡Gracias por la entrada! Lo anterior funcionó con algunas modificaciones (es decir, uno tiene que crear primero un cursor, de lo contrario, DatabaseWrapper.connection es None). He estado rompiendo mi cabello sobre esto. – Krumelur
@Krumelur ¿puede publicar una solución completa? – user985541