securelord
Дек. 7, 2007 18:29:33
Вопрос: есть ли какие то методы в MySQLdb, которые позволяют сделать, к примеру такое условие -
if (какой то запрос) завершился удачно (без ошибок и варнингов) то выполнить то-то
else
выполнить то-то
?
Mr.Floppy
Дек. 7, 2007 19:58:15
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
Дек. 10, 2007 12:01:58
Ещё вариант вывода текста ошибки
from traceback import print_exc, format_exc
...
try:
cur.execute(...)
except yourException, e:
print_exc() # и/или logging.error(format_exc()) #или logging.exception(e)
Ferroman
Дек. 10, 2007 21:17:58
Можно ещё использовать
Stored Procedures and Functions в самом MySQL
balu
Дек. 13, 2007 12:04:45
А можно обычный 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
Фев. 5, 2008 15:05:20
У меня по этой теме думаю вопрос ко всем, кто знает.
вот КОД:
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
Фев. 6, 2008 12:13:49
Обвернуть место добавления пользователя в try …. except с обработкой ошибки.