РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
193 of 711 menu

Атрибут mappers класса registry

Атрибут mappers класса registry возвращает специальную коллекцию, содержащую все мапперы, которые были зарегистрированы в данном реестре. Каждый маппер связывает класс модели с таблицей базы данных. Коллекция ведет себя подобно словарю: ключом выступает класс модели, а значением - объект Mapper. Атрибут доступен только для чтения и обновляется автоматически при регистрации новых классов через registry.map_imperatively или через декларативную базу, созданную методом generate_base.

Синтаксис

registry.mappers

Пример

Давайте создадим реестр и зарегистрируем в нем класс модели с помощью метода map_imperatively, а затем посмотрим на содержимое атрибута mappers:

from sqlalchemy import Column, Integer, String, Table, MetaData from sqlalchemy.orm import registry reg = registry() metadata = MetaData() articles = Table( 'articles', metadata, Column('id', Integer, primary_key=True), Column('title', String), ) class Article: pass reg.map_imperatively(Article, articles) print(reg.mappers)

Результат выполнения кода:

"{Article: <Mapper at 0x...; Article>>}"

Пример

Давайте переберем все зарегистрированные мапперы и выведем для каждого имя класса и имя таблицы:

from sqlalchemy import Column, Integer, String, Table, MetaData from sqlalchemy.orm import registry reg = registry() metadata = MetaData() articles = Table( 'articles', metadata, Column('id', Integer, primary_key=True), Column('title', String), ) users = Table( 'users', metadata, Column('id', Integer, primary_key=True), Column('name', String), ) class Article: pass class User: pass reg.map_imperatively(Article, articles) reg.map_imperatively(User, users) for cls, mapper in reg.mappers.items(): print(cls.__name__, '->', mapper.local_table.name)

Результат выполнения кода:

Article -> articles User -> users

Пример

Давайте получим маппер конкретного класса из коллекции mappers и выведем его первичный ключ:

from sqlalchemy import Column, Integer, String, Table, MetaData from sqlalchemy.orm import registry reg = registry() metadata = MetaData() articles = Table( 'articles', metadata, Column('id', Integer, primary_key=True), Column('title', String), ) class Article: pass reg.map_imperatively(Article, articles) mapper = reg.mappers[Article] print([column.name for column in mapper.primary_key])

Результат выполнения кода:

['id']

Смотрите также

  • класс registry,
    который хранит коллекцию мапперов
  • метод map_imperatively,
    который регистрирует маппер в реестре
  • метод generate_base,
    который создает декларативную базу для реестра
  • атрибут metadata,
    который хранит объект MetaData реестра
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить