Обработка исключений#
Посмотрим на пример использования метода execute при возникновении ошибки.
В таблице switch поле mac должно быть уникальным. И, если попытаться записать пересекающийся MAC-адрес, возникнет ошибка:
In [37]: con = sqlite3.connect('sw_inventory2.db') In [38]: query = "INSERT into switch values ('0000.AAAA.DDDD', 'sw7', 'Cisco 2960', 'London, Green Str')" In [39]: con.execute(query) ------------------------------------------------------------ IntegrityError Traceback (most recent call last) ipython-input-56-ad34d83a8a84> in module>() ----> 1 con.execute(query) IntegrityError: UNIQUE constraint failed: switch.mac
Соответственно, можно перехватить исключение:
In [40]: try: . : con.execute(query) . : except sqlite3.IntegrityError as e: . : print("Error occurred: ", e) . : Error occurred: UNIQUE constraint failed: switch.mac
Обратите внимание, что надо перехватывать исключение sqlite3.IntegrityError, а не IntegrityError.
Exception Handling#
Let’s see an example of how to use execute method when an error occurs.
In switch table the mac field must be unique. If you try to write an overlapping MAC address, there is an error:
In [37]: con = sqlite3.connect('sw_inventory2.db') In [38]: query = "INSERT into switch values ('0000.AAAA.DDDD', 'sw7', 'Cisco 2960', 'London, Green Str')" In [39]: con.execute(query) ------------------------------------------------------------ IntegrityError Traceback (most recent call last) ipython-input-56-ad34d83a8a84> in module>() ----> 1 con.execute(query) IntegrityError: UNIQUE constraint failed: switch.mac
Accordingly, you can catch the exception:
In [40]: try: . : con.execute(query) . : except sqlite3.IntegrityError as e: . : print("Error occurred: ", e) . : Error occurred: UNIQUE constraint failed: switch.mac
Note that you should catch sqlite3.IntegrityError exception, not IntegrityError .