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


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

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

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

Оффлайн Grigory Smirnov

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

Оффлайн SergeyIT

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5589
  • Все по палатам!
    • Просмотр профиля
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) [Выделить]
import sys
reload(sys)
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) [Выделить]
import sqlite3



conn = sqlite3.connect('mydb.db')   
c = conn.cursor()
conn.execute("create table if not exists person(firstname, spots)")          # создаст таблицу, если её нет
data = [(u"Иван", 10), (u"Марья", 20)]                                       # данные для записи в базу данных
conn.executemany("insert into person(firstname, spots) values (?, ?)",data)  # запись в базу данных
conn.commit()                                                                # сохранение изменений в базе данных
 
c.execute('select * from person order by firstname')
while True:
    tmp=c.fetchone()
    if tmp:
        print tmp
    else:
        break
Вопрос жизни и смерти!

Оффлайн Phlya

  • Старожил
  • *
  • Сообщений: 2219
  • Фля, Цыганский барон, Винни Пух
    • Просмотр профиля
Re: Python и SQLite, нужен русский текст
« Ответ #4 : 20 Августа 2013, 12:35:16 »
Попробуйте вместо print использовать sys.stdout.write()
Помните, что он не добавляет перенос строки к концу, так что стоит использовать так:
Код: (Python) [Выделить]
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

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

Оффлайн Grigory Smirnov

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


Оффлайн victor00000

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

Оффлайн Phlya

  • Старожил
  • *
  • Сообщений: 2219
  • Фля, Цыганский барон, Винни Пух
    • Просмотр профиля
Re: Python и SQLite, нужен русский текст
« Ответ #12 : 20 Августа 2013, 13:02:40 »
Просто числа что-то я скобочках не вижу... Поэтому и не соотнес.
Ну, печатаете так:
Код: (Python) [Выделить]
def my_print(string):
   sys.stdout.write(string)

...

for i in tmp:
    my_print(str(i))
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.049 секунд. Запросов: 25.