Найти - Пользователи
Полная версия: Фильтрация ошибок в MySQLdb
Начало » Базы данных » Фильтрация ошибок в MySQLdb
1
securelord
Вопрос: есть ли какие то методы в MySQLdb, которые позволяют сделать, к примеру такое условие -


if (какой то запрос) завершился удачно (без ошибок и варнингов) то выполнить то-то

else
выполнить то-то
?
Mr.Floppy
try:
conn = MySQLdb.connect(host, user, passwd, db)
cursor = conn.cursor()
cursor.execute(…
except MySQLdb.Error, e:
print “Error %d: %s” % (e.args, e.args)
sys.exit()
cursor.close()
conn.commit()
conn.close()
dvs
Ещё вариант вывода текста ошибки
from traceback import print_exc, format_exc
...
try:
    cur.execute(...)
except yourException, e:
    print_exc()  # и/или logging.error(format_exc()) #или logging.exception(e)
Ferroman
Можно ещё использовать Stored Procedures and Functions в самом MySQL
balu
А можно обычный sql:


CASE value WHEN THEN result [WHEN THEN result …] END
CASE WHEN THEN result [WHEN THEN result …] END
В первом варианте возвращается значение result, если value=compare-value. Во втором - результат для первого указанного условия condition, если оно истинно. Если соответствующая величина результата не определена, то возвращается значение result, указанное после оператора ELSE. Если часть ELSE в выражении отсутствует, возвращается NULL:

mysql> SELECT CASE 1 WHEN 1 THEN “one”
WHEN 2 THEN “two” ELSE “more” END;
-> “one”
mysql> SELECT CASE WHEN 1>0 THEN “true” ELSE “false” END;
-> “true”
mysql> SELECT CASE BINARY “B” WHEN “a” THEN 1 WHEN “b” THEN 2 END;
-> NULL
flashi4
У меня по этой теме думаю вопрос ко всем, кто знает.

вот КОД:

def save_acc(self):
record = model.Record()
record.user = request.params
record.password = request.params
record.flush()
h.redirect_to(action='saved_acc')


он добавляет в базу моих пользователей с паролем.

Вот моя модель :
КОД:

meta = MetaData()

records_table = Table('records', meta,
Column('id', Integer,primary_key=True),
Column('user', String(40), unique=True),
Column('password', String(40)),
)

class Record(object):
def __str__(self):
return self.title


Как вы заметили во втором Column'e поле user уникальное и при добавлении дубля в базу возникает ошибка…

<class ‘sqlalchemy.exceptions.SQLError’>: (IntegrityError) (1062, “Duplicate entry ‘1’ for key 2”) u'INSERT INTO records (user, password) VALUES (%s, %s)'


Кто знает как это можно убрать и сделать, чтобы при добавлении дубля в таблицу выдавалось сообщение, что “такой пользователь уже существует.”

Подскажите ПЛззз :)
Ferroman
Обвернуть место добавления пользователя в try …. except с обработкой ошибки.
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