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).