У меня есть проект django, который использует базу данных sqlite, которая может быть записана внешним инструментом. Текст должен быть UTF-8, но в некоторых случаях в кодировке будут ошибки. Текст из внешнего источника, поэтому я не могу управлять кодировкой. Да, я знаю, что я могу написать «оберточный слой» между внешним источником и базой данных, но я предпочитаю не делать этого, тем более, что в базе данных уже содержится много «плохих» данных.Изменить text_factory в Django/sqlite
Раствор в SQLite, чтобы изменить text_factory к чему-то вроде: lambda x: unicode(x, "utf-8", "ignore")
Однако, я не знаю, как сказать водителю модельную Джанго это.
Исключение я получаю:
'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
Как-то мне нужно сказать SQLITE драйвер не пытаться расшифровать текст в UTF-8 (по крайней мере, не используя стандартный алгоритм, но для этого нужно для использования моего отказобезопасного варианта).
Спасибо за вход! Вышеописанная работа с несколькими модификациями (а именно, сначала нужно создать курсор, иначе DatabaseWrapper.connection - None). Я разрывал волосы по этому поводу. – Krumelur
@ Krumelur может опубликовать полное решение? – user985541