Форум программистов, компьютерный форум, киберфорум
Python: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 12.12.2014
Сообщений: 4

Русские буквы из MySQL в Питоне

12.12.2014, 02:47. Показов 2923. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть задача написать программу на Питоне, которая будет подтягивать информацию из базы MySQL и отображать ее в treeWidget.
Код вроде написал, но есть проблема с кодировкой - когда записываю русские буквы в таблицу через mysql workbench то при запуске файла main.py sublime выдает следующее:

UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-5: ordinal not in range(128)

С латинскими буквами в таблице программа запускается и отображает таблицу без проблем. И русский текст в шапке таблицы (setHeaderLabels) тоже отображается корректно.

Как это можно устранить?

Кликните здесь для просмотра всего текста

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
import sys
from PyQt4 import QtCore, QtGui, uic
import DB_manager, sys
import socket
 
class Foo(object):
    def __init__(self, name):
        self.name = name
  
    def __str__(self):
        return 'str: %s' % self.name
  
    def __unicode__(self):
        return 'uni: %s' % self.name.decode('cp1251')
 
    def __repr__(self):
        return 'repr: %s' % self.name
 
class MainWindow(QtGui.QMainWindow):
 
    #def __unicode__(self):
        #return 'uni: %s' % self.name.decode('utf-8')
 
    def __init__(self, database, tableName):
        QtGui.QMainWindow.__init__(self)
        uic.loadUi('form.ui', self)
        self.pushButton.clicked.connect(self.pushButton_Click)
        self.pushButton2.clicked.connect(self.pushButton2_Click)
        #self.treeWidget.clear()
        
        self.dbu = DB_manager.DatabaseUtility(database, tableName)
        self.UpdateTree()
 
        
    def pushButton_Click (self):
        HOST = "176.36.79.196" 
        PORT = 2014 
        sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 
        sock.connect((HOST, PORT)) 
        sock.send("00002222"+"\0") 
        data = sock.recv(1024)
        print data
        sock.close() 
 
    def pushButton2_Click (self):
        text = self.lineEdit.text()
        self.dbu.AddEntryToTable(text)
        self.UpdateTree()
 
    def UpdateTree(self):
        
        col = self.dbu.GetColumns()
        table = self.dbu.GetTable()
 
        for c in range(len(col)):
            self.treeWidget.headerItem().setText(c, col[c][0])
            self.treeWidget.setHeaderLabels([u'Пульт. номер',u'Событие',u'Время события',u'Тип ППК'])
        self.treeWidget.clear()
 
        
        for item in range(len(table)):
            QtGui.QTreeWidgetItem(self.treeWidget)
            for value in range(len(table[item])):
                self.treeWidget.topLevelItem(item).setText(value, str(table[item][value]))
 
      
 
if __name__ == '__main__':
 
    db = 'ppkbase33'
    tableName = 'id2222'
 
 
 
app = QtGui.QApplication(sys.argv)
w = MainWindow(db, tableName)
w.show()
sys.exit(app.exec_())
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.12.2014, 02:47
Ответы с готовыми решениями:

Русские буквы в mysql
Да да, снова какой-то баНан который не умеет пользоваться поиском. И собственно вопрос. Как добавить в БД русские символы. Сейчас вместо...

MySQL. Русские буквы
Не подскажете в чем может быть проблема? Создавал таблицу в кодировке cp1251, после подключения к базе писал set names cp1251, вместо...

русские буквы + mysql
Стоит на хостинге сайтик. Я его на локу перенес и пару дней у себя его делал и сразу тестил. Вот сегодня перенес на хостинг вместе с...

7
71 / 71 / 16
Регистрация: 07.05.2014
Сообщений: 181
12.12.2014, 10:39
Кодировка в MySQL желательно utf-8. Переводи в юникод через unicode или u'Переведется в юникод'
0
0 / 0 / 0
Регистрация: 12.12.2014
Сообщений: 4
12.12.2014, 11:19  [ТС]
То есть нужно поменять настройки именно самой базы mysql?
Просто уже пробовал менять в базе и на utf-8(default collation) и на cp1251 - результата никакого.
И еще, это все я делаю на питоне 2.7. Есть ли смысл попробовать это на питоне 3.4? У него, вроде как, с юникодом получше.
0
71 / 71 / 16
Регистрация: 07.05.2014
Сообщений: 181
12.12.2014, 12:02
Я работаю на 2.7. Никаких проблем. Поставь PyScripter и запусти пошагувую отладку. В отладке есть окно "выражения", можно посмотреть значение переменных. Найдеш ошибку
1
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
12.12.2014, 12:44
Цитата Сообщение от stepart Посмотреть сообщение
Есть ли смысл попробовать это на питоне 3.4? У него, вроде как, с юникодом получше.
Там с юникод не лучше, просто сделали все строки по умолчанию юникодными, а старые байтовые строки, которые использовались по умолчанию во второй ветке вынесли в тип bytes.

Тебе главное понять принцип работы со строками, а дальше как по накатаной пойдёт.

Добавлено через 1 минуту
Кстати, чем пользуешься для работы с базой?

Добавлено через 59 секунд
Вот тут не плохо объясняется принцип работы с кодировками, почитай http://www.py-my.ru/post/4bfb3c6a1d41c846bc00009b

Добавлено через 1 минуту
Цитата Сообщение от uznik93 Посмотреть сообщение
Поставь PyScripter
Не советую, убогенькая IDE, ставьте лучше pycharm, это не ide, а торт просто
1
71 / 71 / 16
Регистрация: 07.05.2014
Сообщений: 181
12.12.2014, 12:49
Цитата Сообщение от tsar925 Посмотреть сообщение
Не советую, убогенькая IDE, ставьте лучше pycharm, это не ide, а торт просто
Ну да, лучше поставить платного монстра , что бы отладить 10 строк кода
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
12.12.2014, 13:35
uznik93,
1.Есть бесплатные версии
2.Я предлагаю не только для отладки, а на постоянной основе поставить, потому что это очень удобнейшая вещь
3.Ваш PyScripter платформа зависимый, а pycharm кросс-платформенный. Не известно на какой системе сидит создатель вопроса.
0
0 / 0 / 0
Регистрация: 12.12.2014
Сообщений: 4
12.12.2014, 15:19  [ТС]
Цитата Сообщение от tsar925 Посмотреть сообщение
Кстати, чем пользуешься для работы с базой?
mysql-connector
Цитата Сообщение от tsar925 Посмотреть сообщение
Вот тут не плохо объясняется принцип работы с кодировками, почитай http://www.py-my.ru/post/4bfb3c6a1d41c846bc00009b
спасибо, почитаю
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.12.2014, 15:19
Помогаю со студенческими работами здесь

Русские буквы в MYSQL
Заношу на прямую через phpmyadmin в mysql данные на русском , а он ругаеться . Затронуто строк: 1. Warning: #1366 Incorrect string...

Не работают русские буквы в MySQL
Здравствуйте, помогите как решить проблему. Когда из С# пытаюсь заполнить поля БД MySQL они заполняются различной кроказяблей. Мб где то...

Русские буквы в MySQL не пишутся!!!??
День добрый!!! Проблема заключается в следующем: При добавлении новой записи русскими буквами через браузер ....эта запись не...

MySQL и русские буквы в программе
Очень нужна Ваша помощь ! Есть база в MySQL, в таблицах есть поля на русском ( по умолчанию таблицы cp-1251 ) Подрубаюсь к базе...

MySQL не видит русские буквы
Здравствуйте. Записываю через программу, созданную на Qt5 некоторые данные в базу данных. Записал 10 штук, захожу посмотреть что там, а в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru