Метод configure класса Mapper
Метод configure класса Mapper выполняет
финальную настройку маппера. Он связывает
пользовательский класс с таблицей базы данных,
инициализирует свойства маппера и подготавливает
его к использованию в сессии. Метод принимает
необязательный параметр **kwargs, в котором
можно передать дополнительные опции конфигурации,
например primary_key или properties.
Обычно метод вызывается автоматически при создании
маппера, но бывают случаи, когда нужно вызвать его
вручную.
Синтаксис
Mapper.configure(**kwargs)
Пример
Давайте создадим маппер вручную и вызовем метод
configure для связывания класса с таблицей:
from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String
from sqlalchemy.orm import Mapper
engine = create_engine('sqlite:///:memory:')
metadata = MetaData()
articles = Table(
'articles', metadata,
Column('id', Integer, primary_key=True),
Column('title', String),
Column('text', String),
)
class Article:
pass
mapper = Mapper(Article, articles)
mapper.configure()
print(mapper.class_)
print(mapper.local_table)
Результат выполнения кода:
<class '__main__.Article'>
articles
Пример
Давайте передадим в метод configure
дополнительные свойства через параметр
properties:
from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String
from sqlalchemy.orm import Mapper
engine = create_engine('sqlite:///:memory:')
metadata = MetaData()
articles = Table(
'articles', metadata,
Column('id', Integer, primary_key=True),
Column('title', String),
Column('text', String),
)
class Article:
pass
mapper = Mapper(Article, articles)
mapper.configure(properties={
'title': articles.c.title,
'text': articles.c.text,
})
print(list(mapper.attrs.keys()))
Результат выполнения кода:
['id', 'title', 'text']
Пример
Давайте проверим, что повторный вызов
configure на уже сконфигурированном маппере
не приводит к ошибке:
from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String
from sqlalchemy.orm import Mapper
engine = create_engine('sqlite:///:memory:')
metadata = MetaData()
articles = Table(
'articles', metadata,
Column('id', Integer, primary_key=True),
Column('title', String),
)
class Article:
pass
mapper = Mapper(Article, articles)
mapper.configure()
mapper.configure()
print(mapper.configured)
Результат выполнения кода:
True
Смотрите также
-
класс
Mapper,
который связывает класс с таблицей базы данных -
атрибут
attrs,
который содержит свойства маппера -
атрибут
local_table,
который хранит таблицу, связанную с маппером -
метод
get_property,
который возвращает свойство маппера по имени