Форум сайта python.su
Снова добрый день!
Возникла проблема хранения данных в формате unicode в sql-таблицах, погуглил: так и не нашел.
Заранее скажу, что использую для этих нужд sqlite.
Пробовал сам: БД конечно, сохраняет строку у себя, но при выборке пишет примерно следующее:
sqlite3.OperationalError: Could not decode UTF-8 column ‘name’ with text ‘пример’
Заранее спасибо!
Офлайн
Art-master
показывайте код, ибо sqlite работает в UTF-8 по умолчанию, возможно проблема где то в коде
Офлайн
Вот
# coding: utf8 import sqlite3 as sql db = sql.connect("data.db") c = db.cursor() c.execute(u"CREATE TABLE tab (id INT, name VARCHAR(100));") c.execute(u"INSERT INTO tab VALUES (1, 'пример');") c.execute(u"SELECT name FROM tab WHERE id=1;") print c.fetchone() db.commit() db.close() raw_input()
Отредактировано Art-master (Дек. 23, 2013 19:36:29)
Офлайн
Art-master
ну во первых, в вашем коде уже синтаксическая ошибка, а именно не INTRO, а INTO… если это опечатка, то подумайте хорошенько как так получилось что вы на форум постите код который не проверяли.
во вторых, я скопировал, вставил, запустил и у меня все работает.
судя по наличию в конце raw_input у вас ОС Windows, так ли это? Вы действительно убедились что сам текст кода программы является текстом кодированным в utf-8, ведь верхняя строчка это указание интерпретатору о том что данный модуль кодирован в utf-8, но сам текст может быть кодирован как угодно (cp1251, cp866) - что может являться причиной разного рода ошибок, включая неявные.
Офлайн
Простите за синтаксис, но при переносе кода на форум, я его сделал немного более читабельным, и случайно написал INTRO.
Действительно, ошибка была кодировке самого скрипта, что весьма странно, как я мог этого не заметить.
Спасибо!
Офлайн