Sobes.tech
Назад к вопросам
Middle
5

Ты сам писал сервис, который применяет эти транзакции? Что конкретно он делал?

Компании, где спрашивали
ЛИСТ РЕНТАЛС

Ответ от нейросети

sobes.tech AI

Да, я писал сервис на Python, который использовал транзакции для обеспечения целостности данных при работе с базой. Например, сервис обрабатывал заказы в интернет-магазине: при создании заказа нужно было одновременно списать товар со склада и записать информацию о заказе. Чтобы избежать рассогласования данных, операции оборачивались в транзакцию — если что-то шло не так, все изменения откатывались.

Пример с использованием SQLAlchemy:

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker

engine = create_engine('postgresql://user:password@localhost/db')
Session = sessionmaker(bind=engine)

session = Session()
try:
    # списываем товар со склада
    product = session.query(Product).filter_by(id=product_id).one()
    product.stock -= quantity

    # создаём заказ
    order = Order(user_id=user_id, product_id=product_id, quantity=quantity)
    session.add(order)

    session.commit()
except Exception:
    session.rollback()
    raise
finally:
    session.close()

Таким образом, сервис гарантировал, что либо все операции применятся, либо ни одной.