все Python 3sqlite3исключение
sqlite3.OperationalError
исключения
Исключение sqlite3 для ошибок самой базы данных, не зависящих от программиста: файл БД не найден, нет такой таблицы, база заблокирована. Подкласс sqlite3.DatabaseError.
Синтаксис
sqlite3.OperationalError
Самый частый источник в учебных задачах — «no such table»: sqlite3.connect() не ругается на несуществующий файл, а молча создаёт пустую базу, поэтому опечатка в пути оборачивается отсутствующей таблицей на первом же запросе. Второй сюжет — «database is locked»: другое соединение держит незакрытую транзакцию, и sqlite3 ждёт освобождения ограниченное время (по умолчанию 5 секунд, параметр timeout у connect), после чего бросает исключение. Отделять его от ProgrammingError стоит именно поэтому: тут чинят окружение — путь, схему, чужую транзакцию, а не текст своего кода.
Примеры
import sqlite3
print(issubclass(sqlite3.OperationalError, sqlite3.DatabaseError)) # → True
print(issubclass(sqlite3.OperationalError, sqlite3.Error)) # → True
con = sqlite3.connect(':memory:')
try: con.execute('SELECT * FROM missing')
except sqlite3.OperationalError as e: print(e) # → no such table: missing
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности