Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 16, 2015 14:54:38

ruskiy1
Зарегистрирован: 2015-10-26
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

sqlite3 и кодировки

Сильно не пинать, только учусь.

создал тестовую базу(кодировка cp1251), создал пару таблиц, забил ее данными (кириллица).
из питона пытаюсь прочитать эти данные - и постоянно натыкаюсь на проблему кодировки

текст test.py:

# -*- coding: utf-8 -*
import sqlite3

mybase = sqlite3.connect('testdb.db')
mybase.text_factory = str
curr = mybase.cursor()
sql_t1 = “select * from site”
curr.execute(sql_t1)
print(curr.fetchone())
curr.close()
mybase.close()
input()

при выполнении валится с ошибкой:

sqlite3.OperationalError: Could not decode to UTF-8 column ‘msg’ with text ‘\uff
fd\ufffd\ufffd\ufffd \ufffd \ufffd\ufffd\ufffd\ufffd\ufffd\ufffd’

пробовал менять кодировку в заголовке test.py - не помогает.
Подскажите как правильно прочитать данные из базы?
п.с. запись в базу происходит без ошибок.

Офлайн

#2 Ноя. 16, 2015 15:38:36

ruskiy1
Зарегистрирован: 2015-10-26
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

sqlite3 и кодировки

Решено.

Надо было менять не кодировку в заголовке, а в text_factory:

mybase.text_factory = lambda s: str(s, “cp1251”)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version