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

Класс SessionTransaction

Класс SessionTransaction представляет собой объект транзакции, связанный с сессией. Он управляет жизненным циклом транзакции базы данных, включая её начало, фиксацию и откат. Транзакция создаётся автоматически при первом обращении к базе данных в рамках сессии, либо может быть открыта явно с помощью метода begin. Класс не принимает параметров напрямую - экземпляр возвращается методами сессии.

Синтаксис

session.begin()

Пример

Давайте создадим сессию и откроем транзакцию явно, а затем зафиксируем её:

from sqlalchemy import create_engine, text from sqlalchemy.orm import Session engine = create_engine('sqlite:///:memory:') with Session(engine) as session: trans = session.begin() print(trans) session.execute(text('SELECT 1')) trans.commit()

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

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

Пример

Давайте выполним откат транзакции при возникновении ошибки:

from sqlalchemy import create_engine, text from sqlalchemy.orm import Session engine = create_engine('sqlite:///:memory:') with Session(engine) as session: trans = session.begin() try: session.execute(text('INSERT INTO articles (title) VALUES (:title)'), {'title': 'article'}) trans.commit() print('Transaction committed') except Exception: trans.rollback() print('Transaction rolled back')

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

"Transaction committed"

Пример

Давайте проверим состояние транзакции после её закрытия:

from sqlalchemy import create_engine, text from sqlalchemy.orm import Session engine = create_engine('sqlite:///:memory:') with Session(engine) as session: trans = session.begin() print(trans.is_active) trans.close() print(trans.is_active)

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

True False

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

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