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

Метод __call__ класса sessionmaker

Метод __call__ класса sessionmaker вызывается при обращении к экземпляру фабрики сессий как к функции. Он создает и возвращает новый объект Session, используя настройки, заданные при создании sessionmaker: движок bind, класс сессии class_, параметры autoflush, autocommit, expire_on_commit и другие. Метод не принимает обязательных параметров, но допускает передачу переопределений, которые применяются только к создаваемой сессии.

Синтаксис

sessionmaker_instance()

Пример

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

from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker engine = create_engine('sqlite:///:memory:') Session = sessionmaker(bind=engine) session = Session() print(session)

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

"<sqlalchemy.orm.session.Session object at 0x...>"

Пример

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

from sqlalchemy import create_engine, text from sqlalchemy.orm import sessionmaker engine = create_engine('sqlite:///:memory:') Session = sessionmaker(bind=engine) session = Session() res = session.execute(text('SELECT 1')) print(res.scalar()) session.close()

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

1

Пример

Давайте передадим переопределение параметра expire_on_commit прямо при вызове фабрики:

from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker engine = create_engine('sqlite:///:memory:') Session = sessionmaker(bind=engine, expire_on_commit=True) session = Session(expire_on_commit=False) print(session.expire_on_commit) session.close()

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

False

Пример

Давайте создадим две независимые сессии из одной фабрики и убедимся, что это разные объекты:

from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker engine = create_engine('sqlite:///:memory:') Session = sessionmaker(bind=engine) session_one = Session() session_two = Session() print(session_one is session_two) session_one.close() session_two.close()

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

False

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

  • класс sessionmaker,
    который создает фабрику сессий
  • метод begin,
    который открывает транзакцию сессии
  • метод configure,
    который меняет настройки фабрики
  • метод __call__,
    который создает новый экземпляр сессии
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить