Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: Python и SQLite, нужен русский текст  (Прочитано 3277 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Grigory Smirnov

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1339
  • Дайте мне исходники, и я переверну Землю.
    • Просмотр профиля
    • Дафтер
Python и SQLite, нужен русский текст
« : 19 Август 2013, 20:00:33 »
Начал работать с Sqlite таблицей. Возникла проблема. Вместо русских символов выводится что-то типа этого:
(u'\u041c\u0430\u0440\u044c\u044f')Хочется русскими символами. Кто-нибудь подскажет? Заранее спасибо.

Оффлайн SergeyIT

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5129
  • Все по палатам!
    • Просмотр профиля
Re: Python и SQLite, нужен русский текст
« Ответ #1 : 19 Август 2013, 21:07:40 »
Grigory Smirnov,
Нормально отображается русский в utf8.:(
Тип поля VARCHAR2(длина)
« Последнее редактирование: 19 Август 2013, 21:18:57 от SergeyIT »
Извините, я все еще учусь

Оффлайн Phlya

  • Старожил
  • *
  • Сообщений: 2219
  • Фля, Цыганский барон, Винни Пух
    • Просмотр профиля
Re: Python и SQLite, нужен русский текст
« Ответ #2 : 19 Август 2013, 21:25:37 »
Выводит в консоли/терминале? Если так, то добавьте в начало такое:

Код: Python
  1. import sys
  2. reload(sys)
  3. sys.setdefaultencoding('utf-8')

Я где-то находил эту магию, чтобы терминал UTF-8 показывал.
Ubuntu 14.04 (Unity), MSI GE40

Оффлайн Grigory Smirnov

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1339
  • Дайте мне исходники, и я переверну Землю.
    • Просмотр профиля
    • Дафтер
Re: Python и SQLite, нужен русский текст
« Ответ #3 : 20 Август 2013, 12:26:51 »
SergeyIT, я тоже так думал.
Phlya, не получается. Может в коде что сделать?
Код: Python
  1. import sqlite3
  2.  
  3.  
  4.  
  5. conn = sqlite3.connect('mydb.db')    
  6. c = conn.cursor()
  7. conn.execute("create table if not exists person(firstname, spots)")          # создаст таблицу, если её нет
  8. data = [(u"Иван", 10), (u"Марья", 20)]                                       # данные для записи в базу данных
  9. conn.executemany("insert into person(firstname, spots) values (?, ?)",data)  # запись в базу данных
  10. conn.commit()                                                                # сохранение изменений в базе данных
  11.  
  12. c.execute('select * from person order by firstname')
  13. while True:
  14.     tmp=c.fetchone()
  15.     if tmp:
  16.         print tmp
  17.     else:
  18.         break
Вопрос жизни и смерти!

Оффлайн Phlya

  • Старожил
  • *
  • Сообщений: 2219
  • Фля, Цыганский барон, Винни Пух
    • Просмотр профиля
Re: Python и SQLite, нужен русский текст
« Ответ #4 : 20 Август 2013, 12:35:16 »
Попробуйте вместо print использовать sys.stdout.write()
Помните, что он не добавляет перенос строки к концу, так что стоит использовать так:
Код: Python
  1. sys.stdout.write('your_text'+'\n')

Правда, не представляю, как он будет себя вести, если ему не строку на вход давать.
Похоже, он не умеет не строки печатать вообще.
« Последнее редактирование: 20 Август 2013, 12:39:22 от Phlya »
Ubuntu 14.04 (Unity), MSI GE40

Оффлайн Grigory Smirnov

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1339
  • Дайте мне исходники, и я переверну Землю.
    • Просмотр профиля
    • Дафтер
Re: Python и SQLite, нужен русский текст
« Ответ #5 : 20 Август 2013, 12:41:52 »
Phlya, так что же делать?

Оффлайн Phlya

  • Старожил
  • *
  • Сообщений: 2219
  • Фля, Цыганский барон, Винни Пух
    • Просмотр профиля
Re: Python и SQLite, нужен русский текст
« Ответ #6 : 20 Август 2013, 12:46:33 »
Phlya, так что же делать?

Ну, я не знаю, это Вам решать =) sys.stdout.write после тех команд у меня работает, в смысле, печатает юникод. Это вариант решения. Я в свое время другого не нашел.

А не-строки всегда можно либо преобразовать в строки, либо печатать по-частям.
Ubuntu 14.04 (Unity), MSI GE40

Оффлайн Grigory Smirnov

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1339
  • Дайте мне исходники, и я переверну Землю.
    • Просмотр профиля
    • Дафтер
Re: Python и SQLite, нужен русский текст
« Ответ #7 : 20 Август 2013, 12:48:22 »
Phlya, я уже измучался. Полночи не спал, искал решение. Пожалуйста, скажите как преобразовать в строку этот (u'\u041c\u0430\u0440\u044c\u044f')? __repr__? str? Спасибо  :'(

Оффлайн Phlya

  • Старожил
  • *
  • Сообщений: 2219
  • Фля, Цыганский барон, Винни Пух
    • Просмотр профиля
Re: Python и SQLite, нужен русский текст
« Ответ #8 : 20 Август 2013, 12:55:15 »
Это скобочки это что? Это часть кортежа? Как создавали это?
Ubuntu 14.04 (Unity), MSI GE40

Оффлайн victor00000

  • Забанен
  • Старожил
  • *
  • Сообщений: 15570
  • Глухонемой (Deaf)
    • Просмотр профиля
Re: Python и SQLite, нужен русский текст
« Ответ #9 : 20 Август 2013, 12:57:08 »
Начал работать с Sqlite таблицей. Возникла проблема. Вместо русских символов выводится что-то типа этого:
(u'\u041c\u0430\u0440\u044c\u044f')Хочется русскими символами. Кто-нибудь подскажет? Заранее спасибо.
Марья?
Нельзя друзья, дулу - AnrDaemon видите?
~.o

Оффлайн Grigory Smirnov

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1339
  • Дайте мне исходники, и я переверну Землю.
    • Просмотр профиля
    • Дафтер
Re: Python и SQLite, нужен русский текст
« Ответ #10 : 20 Август 2013, 12:58:49 »
Phlya, я же код дал. Там понятно.
victor00000, хех, да :)


Оффлайн victor00000

  • Забанен
  • Старожил
  • *
  • Сообщений: 15570
  • Глухонемой (Deaf)
    • Просмотр профиля
Re: Python и SQLite, нужен русский текст
« Ответ #11 : 20 Август 2013, 13:01:21 »
root@maxoft-ZBOX-ID84:~# printf "\u041c\u0430\u0440\u044c\u044f"
Марья
Нельзя друзья, дулу - AnrDaemon видите?
~.o

Оффлайн Phlya

  • Старожил
  • *
  • Сообщений: 2219
  • Фля, Цыганский барон, Винни Пух
    • Просмотр профиля
Re: Python и SQLite, нужен русский текст
« Ответ #12 : 20 Август 2013, 13:02:40 »
Просто числа что-то я скобочках не вижу... Поэтому и не соотнес.
Ну, печатаете так:
Код: Python
  1. def my_print(string):
  2.    sys.stdout.write(string)
  3.  
  4. ...
  5.  
  6. for i in tmp:
  7.     my_print(str(i))
  8. my_print('\n')
Ubuntu 14.04 (Unity), MSI GE40

Оффлайн Freezeman

  • Активист
  • *
  • Сообщений: 637
  • Xubuntu 14.04.2 LTS :: SSD Kingston HyperX Fury
    • Просмотр профиля
Re: Python и SQLite, нужен русский текст
« Ответ #13 : 20 Август 2013, 13:16:24 »
Сёдня вечером скажу, как я решал эту проблему.

Оффлайн Grigory Smirnov

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1339
  • Дайте мне исходники, и я переверну Землю.
    • Просмотр профиля
    • Дафтер
Re: Python и SQLite, нужен русский текст
« Ответ #14 : 20 Август 2013, 13:18:58 »
Всем спасибо за ответы. Решил проблему тривиально - сразу пишу GUI для работы с выводом содержания таблицы.
P.S. Ради интереса продолжил шаманить с терминалом. Советы Phlya помогли. Спасибо!
P.P.S. Freezeman, будет интересно послушать, жду.

 

Страница сгенерирована за 0.141 секунд. Запросов: 24.