все Python 3sqlite3функция
sqlite3.enable_callback_tracebacks()
служебные функции
Включает печать трассировки в stderr, когда падает ваша функция, вызванная из SQL (create_function, агрегат, конвертер). По умолчанию выключено.
Синтаксис
sqlite3.enable_callback_tracebacks(flag, /)
Без неё ошибка внутри пользовательской функции превращается в безликое OperationalError «user-defined function raised exception», а настоящая причина — ZeroDivisionError, KeyError — теряется. После enable_callback_tracebacks(True) исходное исключение уходит в sys.unraisablehook и печатается в stderr, но запрос всё равно падает с тем же OperationalError. Флаг глобальный, на весь процесс.
Примеры
# Python 3.11+
import sqlite3
import sys
conn = sqlite3.connect(':memory:')
conn.create_function('half', 1, lambda x: x / 0)
try:
conn.execute('SELECT half(4)')
except sqlite3.OperationalError as e:
print(e) # → user-defined function raised exception
sqlite3.enable_callback_tracebacks(True)
seen = []
sys.unraisablehook = lambda u: seen.append(type(u.exc_value).__name__)
try:
conn.execute('SELECT half(4)')
except sqlite3.OperationalError:
print(seen) # → ['ZeroDivisionError'] — настоящая причина
conn.close()
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности