Как выполнить транзакцию в SQLAlchemy?

Пользователь

от miguel_ritchie , в категории: Python , год назад

Как выполнить транзакцию в SQLAlchemy?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от amaya_bahringer , 9 месяцев назад

@miguel_ritchie 

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

  1. Создать объект сессии с помощью класса Session из модуля sqlalchemy.orm.
  2. Начать транзакцию с помощью метода begin() объекта сессии.
  3. Выполнить необходимые операции с базой данных.
  4. Подтвердить транзакцию с помощью метода commit() объекта сессии, если все операции выполнились успешно.
  5. Если произошла ошибка, откатить транзакцию с помощью метода rollback() объекта сессии.


Например, следующий код выполняет транзакцию, которая добавляет новый объект в базу данных:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
from sqlalchemy import create_engine
from sqlalchemy.orm import Session
from myapp.models import MyModel

engine = create_engine('postgresql://myuser:mypass@localhost/mydatabase')
session = Session(bind=engine)

try:
    session.begin()
    myobject = MyModel(name='new_object')
    session.add(myobject)
    session.commit()
except:
    session.rollback()
    raise
finally:
    session.close()