2013-12-09 4 views
0

Есть ли способ поймать исключения, выброшенные в DAL web2py?Поймать исключения, брошенные Web2Py Database Abstraction Layer

Будем говорить, что у меня есть следующий код:

for item in data_dict: 
    db.table_name.insert(item) 

Если какой-либо из элементов не удалось правильно вставить web2py обрабатывает это и не совершает никаких записей в базе данных и создает билет. Я хочу, чтобы поймать ошибку, вызванную базой данных, и вывести собственное сообщение об ошибке.

Обертка вставки или всего цикла for в блоке try/except вставляет действительные записи и пропускает и выдает ошибки на недопустимые, оставляя базу данных в состоянии, когда некоторые записи были вставлены, а другие - вовсе. Это не предполагаемое поведение.

Я надеюсь, что кто-то может дать мне бесплатное решение для вывода пользовательского сообщения об ошибке. Я использую web2py 2.7.4

ТИА нав

+0

Какова типичная причина отказа вставки? –

ответ

0

Я считаю, у меня есть решение, которое вы ищете, прямо из документации web2py: http://www.web2py.com/book/default/chapter/06#commit-and-rollback

Просто поймать ошибку и выдать откатить.

« Нет создавать, удалять, вставлять, обрезать, удалять или операция обновления действительно совершается до тех пор, пока выдать команду совершить» совершить

>>> db.commit() 

Чтобы проверить это, давайте вставить новую запись:

>>> db.person.insert(name="Bob") 
2 

и откат, т.е. игнорировать все операции с момента последней фиксации:

>>> db.rollback() 
+1

Спасибо, по какой-то причине он не нажимал, пока вы не объяснили мне это, даже после прочтения этого точного раздела несколько раз. :-) – navanitachora

+0

Удивительный! Отметить как правильный ответ? ;) –

Смежные вопросы