Ответ
В SQLAlchemy ORM модели наследуются от специального базового класса, который создается с помощью декларативного подхода. Этот базовый класс связывает Python-класс с таблицей в базе данных и наделяет его функциональностью ORM (Object-Relational Mapping).
Существует два распространенных способа его создания:
1. Классический подход (до SQLAlchemy 1.4):
Используется функция declarative_base()
.
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
# Создание базового класса для моделей
Base = declarative_base()
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String(50))
2. Современный подход (SQLAlchemy 1.4+):
Используется класс DeclarativeBase
.
from sqlalchemy import Column, Integer, String
from sqlalchemy.orm import DeclarativeBase
# Создание базового класса для моделей
class Base(DeclarativeBase):
pass
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String(50))
В обоих случаях Base
служит центральной точкой, через которую SQLAlchemy отслеживает все сопоставленные классы (модели).