Back to questions
Junior — Middle
73
Каким образом в SQLAlchemy реализовать серию последовательных операций записи в базе данных, чтобы они выполнялись в одной транзакции?
Answer from AI
sobes.tech AI
В SQLAlchemy для выполнения серии операций записи в одной транзакции обычно используют контекстный менеджер session.begin(). Все изменения внутри этого блока будут выполнены в рамках одной транзакции, и при возникновении исключения транзакция откатится.
Пример:
from sqlalchemy.orm import sessionmaker
Session = sessionmaker(bind=engine)
session = Session()
try:
with session.begin():
obj1 = MyModel(data='value1')
session.add(obj1)
obj2 = MyModel(data='value2')
session.add(obj2)
# Здесь транзакция автоматически коммитится
except Exception as e:
# При ошибке транзакция откатится
print(f"Ошибка: {e}")
Таким образом, все операции внутри with session.begin(): выполняются атомарно.