все Python 3sqlite3исключение
sqlite3.ProgrammingError
исключения
Исключение sqlite3 для ошибок программиста в работе с API: неверное число параметров запроса, обращение к уже закрытому Connection. Подкласс sqlite3.DatabaseError.
Синтаксис
sqlite3.ProgrammingError
Это всегда ошибка кода: параметров передали не столько, сколько знаков ? в запросе (классика — отдать голую строку вместо кортежа, тогда она разбирается посимвольно), обратились к Connection или Cursor уже после close(), либо тронули соединение из другого потока, чем создали (по умолчанию check_same_thread=True). Повторять запрос бессмысленно — в отличие от OperationalError, само по себе оно не пройдёт; перехват уместен разве что чтобы показать понятное сообщение, а чинить надо вызов.
Примеры
import sqlite3
print(issubclass(sqlite3.ProgrammingError, sqlite3.DatabaseError)) # → True
print(issubclass(sqlite3.ProgrammingError, sqlite3.OperationalError)) # → False
con = sqlite3.connect(':memory:'); con.execute('CREATE TABLE t(a, b)')
try: con.execute('INSERT INTO t VALUES (?, ?)', (1,))
except sqlite3.ProgrammingError as e: print(type(e).__name__) # → ProgrammingError
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности