Метод configure класса registry
Метод configure класса registry
выполняет настройку реестра декларативных классов.
Он позволяет привязать реестр к объекту метаданных
MetaData, а также задать дополнительные
параметры, такие как словарь аннотаций типов и
функция именования ограничений. Первым параметром
метод принимает объект метаданных, в котором будут
храниться описания таблиц. Вторым необязательным
параметром передается словарь дополнительных
настроек, например type_annotation_map
или constructor.
Синтаксис
registry.configure(metadata, [**kw])
Пример
Давайте создадим реестр и привяжем его к собственному объекту метаданных:
from sqlalchemy import MetaData
from sqlalchemy.orm import registry
metadata = MetaData()
mapper_registry = registry()
mapper_registry.configure(metadata=metadata)
print(mapper_registry.metadata is metadata)
Результат выполнения кода:
True
Пример
Давайте передадим в метод configure словарь
аннотаций типов, чтобы сопоставить тип
str с колонкой Text:
from sqlalchemy import MetaData, Text
from sqlalchemy.orm import registry, Mapped, mapped_column
mapper_registry = registry()
mapper_registry.configure(
metadata=MetaData(),
type_annotation_map={str: Text}
)
@mapper_registry.mapped
class Article:
__tablename__ = 'articles'
id: Mapped[int] = mapped_column(primary_key=True)
title: Mapped[str]
print(Article.__table__.c.title.type)
Результат выполнения кода:
TEXT
Пример
Давайте настроим реестр с передачей собственного конструктора для создаваемых классов:
from sqlalchemy import MetaData
from sqlalchemy.orm import registry, Mapped, mapped_column
def custom_constructor(self, **kwargs):
for key, value in kwargs.items():
setattr(self, key, value)
mapper_registry = registry()
mapper_registry.configure(
metadata=MetaData(),
constructor=custom_constructor
)
@mapper_registry.mapped
class Article:
__tablename__ = 'articles'
id: Mapped[int] = mapped_column(primary_key=True)
title: Mapped[str]
article = Article(title='article')
print(article.title)
Результат выполнения кода:
"article"
Смотрите также
-
класс
registry,
который представляет реестр декларативных классов -
метод
map_imperatively,
который связывает класс с таблицей вручную -
метод
generate_base,
который создает декларативную базу из реестра -
метод
update_type_annotation_map,
который дополняет словарь аннотаций типов