Найти - Пользователи
Полная версия: UnicodeEncodeError: 'ascii' codec can't encode characters in position 35-50: ordinal not in range(128)
Начало » Python для новичков » UnicodeEncodeError: 'ascii' codec can't encode characters in position 35-50: ordinal not in range(128)
1
Strelok-den
Есть код что снизу, все другие sql запросы отрабатывают нормально, зам запрос правильный(проверял в май админ) но при запуске выскакивает ошибка:

Exception in Tkinter callback
Traceback (most recent call last):
  File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1473, in __call__
    return self.func(*args)
  File "/home/den/myprojects/pochta/pochta/__init__.py", line 205, in start4
    cursor.execute(sql)
  File "/usr/lib/python2.7/dist-packages/MySQLdb/cursors.py", line 176, in execute
    if not self._defer_warnings: self._warning_check()
  File "/usr/lib/python2.7/dist-packages/MySQLdb/cursors.py", line 92, in _warning_check
    warn(w[-1], self.Warning, 3)
  File "/usr/lib/python2.7/warnings.py", line 29, in _show_warning
    file.write(formatwarning(message, category, filename, lineno, line))
  File "/usr/lib/python2.7/warnings.py", line 38, in formatwarning
    s =  "%s:%s: %s: %s\n" % (filename, lineno, category.__name__, message)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 35-50: ordinal not in range(128)

Пробывал разные encode, язык русский стоит везде Utf-8, # -*- coding: utf-8 -*- тоже имеется…
В чем же проблема?(

def start4(event):
  global poisk3
  poisk3=entry_tip.get()
  poisk3=poisk3.encode('utf-8')
  root4.destroy()
  # запрос к БД
  sql = """SELECT id_tip, id_otd, name FROM tipografia, otdelenia
WHERE tipografia.id_tip = otdelenia.id_otd AND tipografia.adres = otdelenia.name LIKE '%s' LIMIT 1""" %poisk3
  # выполняем запрос
  cursor.execute(sql)
  # получаем результат выполнения запроса
  data =  cursor.fetchall()
  # перебираем записи
  for rec in data: 
  # извлекаем данные из записей - в том же порядке, как и в SQL-запросе
      name = rec
      # выводим информацию
      #print adres
  # закрываем соединение с БД
  root = Tk()
  root.geometry('300x100')
  root.title("По адресу")
  frame_tip1 = Frame(root)
  frame_tip1.grid()
  Label_tip1 = Label(frame_tip1, width=40, height=6, text=name)
  Label_tip1.grid(row=1, column=1)
  db.close()
Alen

А так?

sql = u"""SELECT id_tip, id_otd, name FROM tipografia, otdelenia
WHERE tipografia.id_tip = otdelenia.id_otd AND tipografia.adres = otdelenia.name LIKE '%s' LIMIT 1""" %poisk3
Strelok-den
Alen
Теперь так:
File "/home/den/myprojects/pochta/pochta/__init__.py", line 203, in start4
    WHERE tipografia.id_tip = otdelenia.id_otd AND tipografia.adres = otdelenia.name LIKE '%s' LIMIT 1""" %poisk3
UnicodeDecodeError: 'ascii' codec can't decode byte 0xd0 in position 0: ordinal not in range(128)
4kpt_II
1. Не обязательно хардкорить SQL. Можно попробовать нормальный ORM (лучший пока SQLAlchemy). Будет легче, проще и качественнее.
2. Убивать базовое окно не рекомендуется. Лучше упаковывать все виджеты в рамку и ее удалять или лучше скрывать.
3. Делать

from tkinter import *

Нельзя!!! Глянуть рекомендую тут.

4. Ну и global вообще не есть гуд

P.S. Будут вопросы - пишите…
Strelok-den
4kpt_II
1. Мне надо базу в mysql хранить а как вызывать не суть…
2. Ок спс, это так временные наброски…
3. Почему нельзя? я брал на сайте пример просто там так было) а как лучше?
4. А что есть гуд?)
5. А по теме идеи есть?)
4kpt_II
3. Я же дал ссылку почему нельзя. Лень почитать?
4. Делать все в виде классов. Тогда в global не будет необходимости в принципе. Почему не есть гуд Вам поможет разобраться знакомство с работой “сборщика мусора”.
5. Есть. Сделать все с использованием SQLAlcemy и переложить все эти проблемы на ее плечи

P.S. Будут вопросы - пишите…

P.S.S. Кстати. Забыл сказать. У SQLAlchemy порог вхождения выше, чем у Django ORM, если с ней не пойдет, то можно использовать второе решение.
Strelok-den
4kpt_II
3. Сори не обновил страницу, не заметил ок почитаю спс)
4. С классами не разобрался… как то…
5. SQLAlcemy сможет выводить список или таблицу данных? а то моим методом могу только одну строчку…

ОК)

P.S думаю будут)
4kpt_II
SQLAlchemy может все Ну. Практически все.
А учитывая пока не очень высокие Ваши требования - то реально все

P.S. Будут вопросы - пишите…
Strelok-den
4kpt_II
Не знаю куда писать поэтому пишу тут…
После правки кода под классы, окна что в классах выводятся на задний план в чем проблема? Код если надо вышлю) Спасибо)
4kpt_II
Напишите в раздел GUI.
Заодно и код сразу приложите
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