Найти - Пользователи
Полная версия: MySQLdb и исключения
Начало » Базы данных » MySQLdb и исключения
1
memba
Привет.

Переписываю проект на Питон 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

Я что-то не понимаю как мне получить второй элемент этого кортежа. Или это не кортеж?
memba
Забыл ещё… Сейчас я юзаю что-то вроде такого

try:
db = MySQLdb.connect(host="localhost", user="root", passwd="123456", db="test")
except MySQLdb.Error:
print(db.error())
Но первый вариант меня интересует больше.
Андрей Светлов
В тройке у Exception появился атрибут args…
memba
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

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

Почему так!

import MySQLdb

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

TypeError: ‘OperationalError’ object does not support indexing
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