Уведомления

Группа в Telegram: @pythonsu

#1 Июль 1, 2011 17:28:36

memba
От:
Зарегистрирован: 2010-12-01
Сообщения: 43
Репутация: +  0  -
Профиль   Отправить e-mail  

MySQLdb и исключения

Привет.

Переписываю проект на Питон 3 и сталкнулся с проблемой обработки исключений MySQLdb.

Вот например такой код:

import MySQLdb

try:
pass; # что-то делаем
except MySQLdb.Error as e:
print(e.args[1])
В Питон 2.* он отлично возвращал описание ошибки хранящийся в e.args. Но в 3-ей версии он вызывает ошибку:

IndexError: tuple index out of range

import MySQLdb

try:
pass; # что-то делаем
except MySQLdb.Error as e:
print(e)
это вернёт: (1115, “Unknown character set: ‘utf-8’”)

import MySQLdb

try:
pass; # что-то делаем
except MySQLdb.Error as e:
print(e[1])
Вернёт: TypeError: ‘OperationalError’ object does not support indexing

Я что-то не понимаю как мне получить второй элемент этого кортежа. Или это не кортеж?



Офлайн

#2 Июль 1, 2011 17:47:08

memba
От:
Зарегистрирован: 2010-12-01
Сообщения: 43
Репутация: +  0  -
Профиль   Отправить e-mail  

MySQLdb и исключения

Забыл ещё… Сейчас я юзаю что-то вроде такого

try:
db = MySQLdb.connect(host="localhost", user="root", passwd="123456", db="test")
except MySQLdb.Error:
print(db.error())
Но первый вариант меня интересует больше.



Офлайн

#3 Июль 1, 2011 18:34:39

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

MySQLdb и исключения

В тройке у Exception появился атрибут args…



Офлайн

#4 Июль 1, 2011 18:57:42

memba
От:
Зарегистрирован: 2010-12-01
Сообщения: 43
Репутация: +  0  -
Профиль   Отправить e-mail  

MySQLdb и исключения

try
pass
except MySQLdb.Error as e:
print(e.args)
Вернёт (OperationalError(1115, “Unknown character set: ‘utf-8’”),)

e.args - (1115, “Unknown character set: ‘utf-8’”)
e.args - TypeError: ‘OperationalError’ object does not support indexing

Или я что-то не понял



Офлайн

#5 Июль 2, 2011 00:23:45

memba
От:
Зарегистрирован: 2010-12-01
Сообщения: 43
Репутация: +  0  -
Профиль   Отправить e-mail  

MySQLdb и исключения

Ну, что никто никогда не пробовал так сделать?

Почему так!

import MySQLdb

try:
pass; # что-то делаем
except MySQLdb.Error as e:
print(e) # вернёт кортеж с инфой об ошибке - (1115, "Unknown character set: 'utf-8'")
Почему до него не добраться? Почему при обращение к элементу кортежа по ключу вылезает

TypeError: ‘OperationalError’ object does not support indexing



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version