все Python 3sqlite3функция
sqlite3.adapt()
адаптеры и конвертеры
Недокументированная функция: применяет к объекту зарегистрированный адаптер или его метод __conform__ — то же, что sqlite3 делает с параметром запроса.
Синтаксис
sqlite3.adapt(obj, proto=sqlite3.PrepareProtocol, alt=<не задан>)
Удобна, чтобы проверить адаптер без запроса к базе. Ловушка: родные типы она не пропускает — adapt(1) без адаптера даёт ProgrammingError «can't adapt», хотя в запросе 1 подставляется без проблем; с третьим аргументом alt вместо ошибки вернётся alt. Адаптер из register_adapter важнее __conform__. В документации её нет, поэтому в рабочем коде на неё не опираются.
Примеры
import sqlite3
class Point:
def __init__(self, x, y):
self.x, self.y = x, y
sqlite3.register_adapter(Point, lambda p: f'{p.x};{p.y}')
print(sqlite3.adapt(Point(1, 2))) # → 1;2
print(sqlite3.adapt(1, sqlite3.PrepareProtocol, 'нет адаптера')) # → нет адаптера
try:
sqlite3.adapt(1)
except sqlite3.ProgrammingError as e:
print(e) # → can't adapt
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности