Знакомы с Python и PostgreSQL? Проверьте, удастся ли вам устранить путаницу с билетами.
Такие штуки надо осуществлять транзакциями — операциями, которые могут выполниться успешно целиком или не выполниться вовсе. Должно быть что‑то вроде:
try: # Начинаем транзакцию. Важно, чтобы база данных поддерживала транзакции. db.begin_transaction()
# Запрашиваем базу данных. Что‑то вроде… ticket = db.execute(SQL-запрос здесь).fetchone()
if ticket: db.rollback_transaction() return "Билет не найден"
Всё нормально, осуществляем запись…
except Exception as e: db.rollback_transaction() finally db.end_transaction()
транзакция без изоляции не поможет. Здесь важна блокировка таблицы во время чтения.
Транзакция просто отменить обновление если будет ошибка во время запроса
Такие штуки надо осуществлять транзакциями — операциями, которые могут выполниться успешно целиком или не выполниться вовсе. Должно быть что‑то вроде:
try:
# Начинаем транзакцию. Важно, чтобы база данных поддерживала транзакции.
db.begin_transaction()
# Запрашиваем базу данных. Что‑то вроде…
ticket = db.execute(SQL-запрос здесь).fetchone()
if ticket:
db.rollback_transaction()
return "Билет не найден"
Всё нормально, осуществляем запись…
except Exception as e:
db.rollback_transaction()
finally
db.end_transaction()
транзакция без изоляции не поможет. Здесь важна блокировка таблицы во время чтения.
Транзакция просто отменить обновление если будет ошибка во время запроса