все Python 3sqlite3исключение
sqlite3.IntegrityError
исключения
Нарушена целостность данных в БД: UNIQUE, NOT NULL, проверка внешнего ключа (подкласс sqlite3.DatabaseError).
Синтаксис
raise sqlite3.IntegrityError
Это ошибка данных, а не кода: повтор того же запроса даст тот же результат, поэтому либо чините входные данные, либо заранее пишите INSERT OR IGNORE / ON CONFLICT. Отдельная ловушка SQLite: внешние ключи по умолчанию не проверяются — без PRAGMA foreign_keys = ON, выполненного для каждого соединения, битая ссылка запишется молча, и никакого IntegrityError вы не увидите.
Примеры
import sqlite3
con = sqlite3.connect(':memory:')
con.executescript('CREATE TABLE t(id INTEGER PRIMARY KEY); INSERT INTO t VALUES (1);')
try:
con.execute('INSERT INTO t VALUES (1)')
except sqlite3.IntegrityError as e:
print(type(e).__name__) # → IntegrityError
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности