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

Метод rollback

Метод rollback класса SessionTransaction откатывает текущую транзакцию, отменяя все изменения, которые были сделаны в базе данных в рамках этой транзакции. Метод не принимает параметров. После вызова все объекты, находившиеся в сессии, переводятся в состояние expired, а транзакция завершается.

Синтаксис

transaction.rollback()

Пример

Давайте создадим транзакцию и откатим ее методом rollback:

from sqlalchemy import create_engine, text engine = create_engine('sqlite:///:memory:') with engine.connect() as conn: conn.execute(text('CREATE TABLE articles (id INTEGER PRIMARY KEY, title TEXT)')) transaction = conn.begin() conn.execute(text("INSERT INTO articles (title) VALUES ('article 1')")) transaction.rollback() res = conn.execute(text('SELECT COUNT(*) FROM articles')).scalar() print(res)

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

"0"

Пример

Давайте откатим транзакцию с помощью метода rollback объекта Session, который выполняет откат через SessionTransaction:

from sqlalchemy import create_engine, text from sqlalchemy.orm import Session engine = create_engine('sqlite:///:memory:') with Session(engine) as session: session.execute(text('CREATE TABLE articles (id INTEGER PRIMARY KEY, title TEXT)')) session.commit() session.execute(text("INSERT INTO articles (title) VALUES ('article 1')")) session.rollback() res = session.execute(text('SELECT COUNT(*) FROM articles')).scalar() print(res)

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

"0"

Пример

Давайте убедимся, что изменения, сделанные до вызова rollback, не сохраняются в базе данных:

from sqlalchemy import create_engine, text engine = create_engine('sqlite:///:memory:') with engine.connect() as conn: conn.execute(text('CREATE TABLE articles (id INTEGER PRIMARY KEY, title TEXT)')) conn.execute(text("INSERT INTO articles (title) VALUES ('article 1')")) conn.commit() transaction = conn.begin() conn.execute(text("INSERT INTO articles (title) VALUES ('article 2')")) transaction.rollback() res = conn.execute(text('SELECT title FROM articles')).fetchall() print(res)

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

[('article 1',)]

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

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