Python Glossary English

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