Найти - Пользователи
Полная версия: MySQLdb Проблема с кодировкой.
Начало » Python для новичков » MySQLdb Проблема с кодировкой.
1
Notan1310
Доброго времени суток. Возникла такая проблема. При выводе из БД символы на русском языке выводятся в виде знкаков вопросов либо в виде символов юникода. Проблему не смог решить поиском. Предлагают решения которые не срабатывают в моем случае.
# -*- coding: utf-8 -*-
import MySQLdb
import string
db = MySQLdb.connect(host='localhost', user='root', passwd='83448344f', db='tests', use_unicode=True)
db.set_character_set('utf8')
cursor = db.cursor()
cursor.execute('SET NAMES utf8;')
cursor.execute('SET CHARACTER SET utf8;')
cursor.execute('SET character_set_connection=utf8;')
sql = """SELECT `name` FROM `city` ORDER BY `name` DESC"""
cursor.execute(sql)
data =  cursor.fetchall()
# перебираем записи
for rec in data:
    print rec
db.close()

Вывод
(u'\u0421\u0430\u043d\u043a\u0442-\u041f\u0435\u0442\u0435\u0440\u0431\u0443\u0440\u0433',)
(u'\u0421\u0430\u043c\u0430\u0440\u0430',)
(u'\u041c\u043e\u0441\u043a\u0432\u0430',)
(u'\u041a\u0430\u0437\u0430\u043d\u044c',)
(u'\u0412\u0435\u043b\u0438\u043a\u0438\u0439 \u041d\u043e\u0432\u0433\u043e\u0440\u043e\u0434',)
Либо знаки вопроса
FishHook
А так?
for rec in data:
    print rec[0]
Notan1310
Ощущаю себя ………. Спасибо. Все заработало как нужно. А почему вот именно так работает?Просто я и decode и encode и всяко разно делал, и с бд мудрил
FishHook
class Foo(object):
    def __init__(self, value):
        self.value = value
    def __repr__(self):
        return "<class Foo instance in repr>"
    def __str__(self):
        return str("value=%s" % self.value)
t = (Foo(1), Foo(2), Foo(3))
print t
for foo in t:
    print foo
4kpt_II
Еще есть фокус, который работает для словарей, списков и наборов:

print repr(dict_or_list_or_tuple).decode("unicode_escape")

P.S. С начала всегда такие ошибки Это нормально.
Notan1310
Огромное спасибо. Очень помогли ваши рекомендаций!!!
4kpt_II
Notan1310
Напрямую не рекомендую работать с мускулом. Лучше использовать ORM. Пока лучший вариант - sqlalchemy.
Notan1310
А как вы относитесь к библиотеке pandas? Я мало литературы на русском нашел. Но в целом мануал на английском понятен. Софт для своих целей пишу, иной раз охота стату посмотреть визуально. Стоит ли она изучения? Продуктивна ли? Ваши аналоги? Сорри может тему надо создавать отдельную, но тут вопрос общий, рискнул добавить.
sqlalchemy беру на вооружение. Не знал. Спасибо.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB