Класс registry
Класс registry представляет собой центральный
реестр для хранения метаданных и сопоставлений
декларативных моделей. Он связывает классы Python
с таблицами базы данных и хранит информацию
о маппингах. Первым параметром можно передать
объект MetaData, который будет использоваться
для хранения схемы базы данных.
Синтаксис
from sqlalchemy.orm import registry
reg = registry(metadata=None)
Пример
Давайте создадим реестр и зарегистрируем в нем
декларативную модель с помощью декоратора
mapped:
<+python+>
from sqlalchemy import Integer, String
from sqlalchemy.orm import registry, mapped_column
reg = registry()
@reg.mapped
class Article:
__tablename__ = 'articles'
id: int = mapped_column(Integer, primary_key=True)
title: str = mapped_column(String)
print(reg.mappers)
<-python+>
Результат выполнения кода:
<+python+>
{'Article': }
<-python+>
Пример
Давайте получим доступ к метаданным через атрибут
metadata и посмотрим список таблиц:
<+python+>
from sqlalchemy import Integer, String
from sqlalchemy.orm import registry, mapped_column
reg = registry()
@reg.mapped
class Article:
__tablename__ = 'articles'
id: int = mapped_column(Integer, primary_key=True)
title: str = mapped_column(String)
print(reg.metadata.tables.keys())
<-python+>
Результат выполнения кода:
<+python+>
dict_keys(['articles'])
<-python+>
Пример
Давайте создадим базовый класс через метод
generate_base и определим модель
наследованием:
<+python+>
from sqlalchemy import Integer, String
from sqlalchemy.orm import registry, mapped_column
reg = registry()
Base = reg.generate_base()
class Article(Base):
__tablename__ = 'articles'
id: int = mapped_column(Integer, primary_key=True)
title: str = mapped_column(String)
print(Article.__table__)
<-python+>
Результат выполнения кода:
<+python+>
articles
<-python+>
Смотрите также
-
класс
registry,
который представляет реестр моделей -
метод
configure,
который настраивает маппинги реестра -
метод
generate_base,
который создает декларативный базовый класс -
атрибут
metadata,
который хранит объект MetaData реестра