Python Glossary English

все 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Сообщить о неточности