Sobes.tech
Back to questions
Junior — Middle
59

Как объяснить концепцию императивного сопоставления объектов с таблицами в SQLAlchemy?

Answer from AI

sobes.tech AI

Императивное сопоставление объектов с таблицами (Imperative Mapping) в SQLAlchemy — это способ явно описать, как классы Python связаны с таблицами базы данных, используя код, а не декларативный стиль.

Вместо объявления классов с помощью декларативного базового класса, вы создаёте таблицы и классы отдельно, а затем связываете их с помощью функции mapper().

Пример:

from sqlalchemy import Table, Column, Integer, String, MetaData
from sqlalchemy.orm import mapper

metadata = MetaData()

user_table = Table('user', metadata,
                   Column('id', Integer, primary_key=True),
                   Column('name', String))

class User:
    def __init__(self, name):
        self.name = name

mapper(User, user_table)

Здесь:

  • user_table — описание таблицы в базе,
  • User — класс Python,
  • mapper() связывает класс с таблицей.

Такой подход даёт гибкость в настройке маппинга и полезен, когда нужно более явно контролировать процесс сопоставления, например, при работе с уже существующими таблицами или сложными схемами.