От какого базового класса наследуются модели в SQLAlchemy?

Ответ

В 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 отслеживает все сопоставленные классы (модели).