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

Метод get_nested_transaction

Метод get_nested_transaction возвращает объект SessionTransaction, представляющий текущую вложенную транзакцию (SAVEPOINT), или None, если вложенная транзакция не активна. Метод не принимает параметров. Вложенная транзакция создается методом begin_nested и представляет собой точку сохранения внутри внешней транзакции.

Синтаксис

Session.get_nested_transaction()

Пример

Давайте создадим сессию и проверим, что до вызова begin_nested вложенная транзакция отсутствует:

from sqlalchemy import create_engine from sqlalchemy.orm import Session engine = create_engine('sqlite:///:memory:') with Session(engine) as session: res = session.get_nested_transaction() print(res)

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

"None"

Пример

Теперь откроем вложенную транзакцию и получим ее через метод get_nested_transaction:

from sqlalchemy import create_engine from sqlalchemy.orm import Session engine = create_engine('sqlite:///:memory:') with Session(engine) as session: with session.begin_nested(): res = session.get_nested_transaction() print(res)

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

"<sqlalchemy.orm.session.SessionTransaction object at ...>"

Пример

Давайте проверим, что метод возвращает именно активную вложенную транзакцию, сравнив ее с объектом, созданным begin_nested:

from sqlalchemy import create_engine from sqlalchemy.orm import Session engine = create_engine('sqlite:///:memory:') with Session(engine) as session: nested = session.begin_nested() res = session.get_nested_transaction() print(res is nested)

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

"True"

Пример

Давайте посмотрим, что произойдет после завершения вложенной транзакции - метод снова вернет None:

from sqlalchemy import create_engine from sqlalchemy.orm import Session engine = create_engine('sqlite:///:memory:') with Session(engine) as session: with session.begin_nested(): res = session.get_nested_transaction() print(res is not None) res = session.get_nested_transaction() print(res)

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

"True" "None"

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

  • метод begin_nested,
    который открывает вложенную транзакцию
  • метод get_transaction,
    который возвращает текущую внешнюю транзакцию
  • класс Session,
    который представляет сессию работы с базой
  • метод commit,
    который фиксирует текущую транзакцию
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить