| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Python: Общие вопросы > Вопрос по pysqlite |
| Автор: cherep 18.10.2006, 00:13 |
| Привет!! Есть вопросик... Записываю в sqlite базу данных русские данные. Решил воспользоваться MS Access для просмотра базы. Для этого скачал из инета sqliteodbc.exe - устанавливает в систему odbc дрова, с пом которых аксесс может коннектиться к базе. Есть некая непонятность с кодировками. Если делаю так cursor.executemany("""insert into person (name, nick, age) values (?,?,?)""", WHAT) где WHAT = ( ("Пуц", "Пуц", 123), ("Тыц", "Тыц", 234), ) то в аксессе эти записи видны нормально, однако считывание их пайтоном не работает: cursor.execute("select * from person") # => pysqlite2.dbapi2.OperationalError: Could not decode to UTF-8 column 'nick' with text 'Пуц' Если делать с WHAT = ( (u"Пуц", u"Пуц", 123), (u"Тыц", u"Тыц", 234), ) то питон работает прекрасно, но в аксессе русские слова отображаются кракозябрами... Охота добиться, чтоб работало и то и то, чтоб из Аксеса я мог ручками править базу.. Спасибо. PS. юзаю первой строкой # encoding: cp1251 |
| Автор: batman 18.10.2006, 06:43 |
Поставь # -*- coding: utf-8 -*- Дальше поделись будь добр, как дела |
| Автор: batman 18.10.2006, 08:18 |
| И если можно поподробнее про установку драйверов и настройку. |
| Автор: cherep 18.10.2006, 14:13 |
| К сожалению с # -*- coding: utf-8 -*- эффект такой же как и в случае с использованием u"строка", т.е. питон с sqlite работают без проблем, а вот в Access - русские кракозябрами. А установка несложная. Поискал в гугле "sqlite odbc". Нашел установщик, он мне скопировал в windows\system32 3 длл-ки - odbc дрова, собсна и все. Когда захочешь открыть потом в Аксессе базу данных выбираешь открыть -> в типах файлов выбираешь ODBC databases(), там выскакивает окошко -> там выбираешь вторую закладку(Machine Data Source), жмешь New -> выбираешь нужный драйвер sqlite (там их 3, нужно тот что sqlite3) -> потом собсно указываешь файлик базы и название для вновь созданного соединения... Вот собственно и все Вот мне еще посоветовали, достаточно полезное : http://www.python.promsoft.ru/index.php?action=forum&id=3314#id_3314 правда поставил я этот sqlitebrowser, но он мне не понравился - мало возможностей, и чета он у меня отказался править одну табличку, хотя русский действительно отображает правильно. |
| Автор: proDiva 18.10.2006, 14:27 |
| Я не думаю, что могу помочь, но у меня была подобная ситуация, только я работала с dbf-таблицей. Значит я делала так: при записи в таблицу: str=u'дурики' field_value=str.encode("cp1251") при возврате данных из таблицы: tmp=field_value.decode("cp1251") Авось поможет |
| Автор: batman 18.10.2006, 14:33 |
| У меня MS Access заработал русскими буквами без проблемм. А в sqlitebrowser козябрики. Так-то |
| Автор: pythonwin 19.10.2006, 07:09 |
| cherep, работай через utf-8 |
| Автор: batman 20.10.2006, 10:27 |
| Ну, как дела? |
| Автор: cherep 20.10.2006, 11:20 |
| Короче дела так как и были... Как я понял там только для sqlite2 было 2 драйвера - обычный и юникодный, а для sqlite3 - только обычный... И походу тут ничего не сделать с Access'ом. |
| Автор: batman 20.10.2006, 11:43 |
| Нее ты неправ я с sqlite3 работаю м с Access'ом всё Ок! |
| Автор: cherep 20.10.2006, 19:13 |
| то есть ты пишешь в базу именно в юникоде, и в аксессе у тебя все ништяк отображается? Хм.. Хз че за ботва.. У тебя винда русская? Потому как когда я пишу юникод, у меня в аксессе кракозябры.. Когда пишу ручками в аксессе русские буквы - pysqlite не может прочитать |