Декларативное определение моделей в SQLAlchemy предполагает, что вся метаинформация и дополнительные атрибуты, такие как связи с другими классами, объявляются встроенными в определение класса. 2 Для этого используется базовый класс, от которого наследуются все модели. 1 Он предоставляет основные возможности для работы с таблицами и маппингом. 1
Пример: функция declarative_base()
определяет новый класс, от которого будут унаследованы все ORM-классы. 4 В этом случае объекты Column определяются без указания строки имени, так как она будет выведена из имени атрибута. 4
Недекларативное определение моделей в SQLAlchemy подразумевает использование mapper(), который описывает сопоставление каждой колонки базы данных и классом модели. 3
Классы, определённые с помощью недекларативного и декларативного подходов, полностью взаимозаменяемы. 25 В конечном итоге обе системы создают одну и ту же конфигурацию, состоящую из пользовательского класса Table, связанного вместе с помощью mapper(). 2
Императивный подход удобнее использовать для описания таблиц связей. 2 Он позволяет создавать и изменять модели «на лету», что даёт возможность гибкого использования базы данных. 2