在Django/sqlite中更改text_factory

Kru*_*lur 6 python sqlite django pysqlite

我有一个django项目,它使用可以由外部工具写入的sqlite数据库.该文本应该是UTF-8,但在某些情况下,编码会出错.文本来自外部源,因此我无法控制编码.是的,我知道我可以在外部源和数据库之间写一个"包装层",但我不想这样做,特别是因为数据库已经包含了很多"坏"数据.

sqlite中的解决方案是将text_factory更改为: lambda x: unicode(x, "utf-8", "ignore")

但是,我不知道如何告诉Django模型驱动程序.

我得到的例外是:

'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(至少不使用标准算法,但它需要使用我的故障安全变体).

zif*_*fot 9

sqlite中的解决方案是将text_factory更改为:lambda x:unicode(x,"utf-8","ignore")

但是,我不知道如何告诉Django模型驱动程序.

你有没有尝试过

from django.db import connection
connection.connection.text_factory = lambda x: unicode(x, "utf-8", "ignore")
Run Code Online (Sandbox Code Playgroud)

在运行任何查询之前?