pysqlite DatabaseError: Вы не должны использовать 8-битные строки байтов, если не используете text_factory

Я пытаюсь вставить строку документа, которую я читаю через файл csv, в базу данных sqlite, в которой есть такие символы, как (детские). Она выдает следующую ошибку:

DatabaseError: Вы не должны использовать 8-битные строки байтов, если вы не используете text_factory, которая может интерпретировать 8-битные строки байтов (например, text_factory = str). Настоятельно рекомендуется вместо этого просто переключить свое приложение на строки Unicode.

Перед вставкой документа я проверяю, что я конвертирую строку в unistring.

Юникод ("Детский", "Юникод-побег")

Я использую Django ORM для сохранения данных. Что я могу сделать, чтобы избавиться от этого?

1 ответ

Параметр.execute(), который вызывает ошибку, является строкой байтов Python вместо строки юникода, как вы сказали. Решение: вместо этого создайте строку Unicode: Unicode (your_data, your_encoding). Для большинства CSV-файлов кодировка будет "latin-1" или "uft-8".

Использование "Unicode-escape" почти наверняка неправильно. Это специфичная для Python кодировка, предназначенная для "создания строки, подходящей в качестве литерала Unicode в исходном коде Python" в соответствии с документами ( https://docs.python.org/2/library/codecs.html).

Другие вопросы по тегам