При создании класса ORM анализирует объявленные поля и формирует метаданные отображения. Django делает это через ModelBase; в SQLAlchemy механизм зависит от выбранного declarative API и версии.
Как метаклассы Python используются в Django и SQLAlchemy для автоматической генерации полей моделей?
При создании класса ORM анализирует объявленные поля и формирует метаданные отображения. Django делает это через ModelBase; в SQLAlchemy механизм зависит от выбранного declarative API и версии.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
При создании класса ORM анализирует объявленные поля и формирует метаданные отображения. Django делает это через ModelBase; в SQLAlchemy механизм зависит от выбранного declarative API и версии.
ORM собирает определения колонок и связей, назначает им имена и устанавливает descriptor-инструментацию для доступа к значениям. При этом создание Python-класса не означает автоматическое создание таблицы в БД: схема меняется отдельными DDL-командами или миграциями. Не все современные варианты SQLAlchemy требуют пользовательского метакласса: доступны декларативные базовые классы, registry и другие способы mapping. Смысл механизма — преобразовать декларацию модели в управляемую структуру, а не «угадать» поля из любого кода.