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

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

Атрибут metadata класса registry предоставляет доступ к объекту MetaData, связанному с данным реестром. Этот объект хранит коллекцию таблиц, их столбцов, ограничений и других элементов схемы базы данных. При создании класса через registry все декларативные модели автоматически регистрируют свои таблицы в этом объекте MetaData.

Атрибут metadata доступен только для чтения и возвращает экземпляр MetaData. Его можно использовать для создания таблиц в базе данных, получения списка зарегистрированных таблиц и работы с объектами Table напрямую.

Синтаксис

registry.metadata

Пример

Давайте создадим реестр и получим его объект MetaData:

from sqlalchemy.orm import registry reg = registry() print(reg.metadata)

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

"MetaData()"

Пример

Давайте определим модель через реестр и посмотрим, как таблица попадает в объект metadata:

from sqlalchemy.orm import registry reg = registry() @reg.mapped_as_dataclass class Article: __tablename__ = 'articles' id: int title: str text: str status: str num: int print(reg.metadata.tables.keys())

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

"dict_keys(['articles'])"

Пример

Давайте используем объект metadata для создания таблиц в базе данных:

from sqlalchemy import create_engine from sqlalchemy.orm import registry reg = registry() @reg.mapped_as_dataclass class Article: __tablename__ = 'articles' id: int title: str text: str status: str num: int engine = create_engine('sqlite:///:memory:') reg.metadata.create_all(engine) print(reg.metadata.tables.keys())

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

"dict_keys(['articles'])"

Пример

Давайте получим объект Table из metadata и выведем список его столбцов:

from sqlalchemy.orm import registry reg = registry() @reg.mapped_as_dataclass class Article: __tablename__ = 'articles' id: int title: str text: str status: str num: int table = reg.metadata.tables['articles'] print([column.name for column in table.columns])

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

['id', 'title', 'text', 'status', 'num']

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

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