Метод commit класса Connection
Метод commit класса Connection
подтверждает текущую транзакцию и делает все
изменения, выполненные в ее рамках, постоянными
в базе данных. Метод не принимает параметров
и не возвращает значения. Если соединение не
находится в активной транзакции, метод начинает
и сразу фиксирует новую транзакцию. После
вызова commit изменения становятся видимы
другим соединениям и не могут быть отменены
через rollback.
Синтаксис
Connection.commit()
Пример
Давайте создадим таблицу и зафиксируем
изменения методом commit:
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')"))
conn.commit()
res = conn.execute(text('SELECT title FROM articles'))
print(res.fetchall())
Результат выполнения кода:
[('article',)]
Пример
Давайте убедимся, что после отката зафиксированные данные сохраняются:
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')"))
conn.commit()
conn.execute(text("INSERT INTO articles (title) VALUES ('user')"))
conn.rollback()
res = conn.execute(text('SELECT title FROM articles'))
print(res.fetchall())
Результат выполнения кода:
[('article',)]
Пример
Давайте зафиксируем изменения и выведем количество строк в таблице:
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')"))
conn.execute(text("INSERT INTO articles (title) VALUES ('user')"))
conn.commit()
res = conn.execute(text('SELECT COUNT(*) FROM articles'))
print(res.scalar())
Результат выполнения кода:
2
Смотрите также
-
класс
Connection,
который представляет соединение с базой данных -
метод
rollback,
который откатывает текущую транзакцию -
метод
begin,
который начинает новую транзакцию -
метод
in_transaction,
который проверяет наличие активной транзакции