все Python 3sqlite3исключение
sqlite3.Error
исключения
Базовый класс всех исключений модуля sqlite3 (подкласс Exception): один except sqlite3.Error перехватывает любую ошибку работы с БД.
Синтаксис
raise sqlite3.Error
Ловить sqlite3.Error разумно на границе программы — там, где вы решаете, что показать пользователю; внутри логики лучше конкретика, иначе опечатка в SQL (OperationalError) и нарушение UNIQUE (IntegrityError) обработаются одинаково. Начиная с Python 3.11 у исключения, пришедшего из самой SQLite, есть sqlite_errorcode и sqlite_errorname — код и имя ошибки прямо от движка, разбирать текст сообщения не нужно. И помните: перехват исключения сам по себе не откатывает транзакцию, нужен con.rollback() или блок with con (он коммитит или откатывает, но соединение не закрывает).
Примеры
import sqlite3
print(issubclass(sqlite3.DatabaseError, sqlite3.Error)) # → True
try:
sqlite3.connect(':memory:').execute('SELECT * FROM nope')
except sqlite3.Error as e:
print(type(e).__name__) # → OperationalError
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности