MySQL / 15. Выполнение транзакций

Использование транзакций в программах на Python

Задача
Вы хотите использовать транзакцию в сценарии DB-API.

Решение
Используйте стандартный механизм поддержки транзакций DB-API.

Обсуждение
В DB-API имеется абстракция, обеспечивающая контроль обработки транзакций за счет методов объектов соединений с базой данных. Вызовите begin() для начала транзакции и commit() или rollback() для ее завершения.

Вызовы begin() и commit() помещены в блок try, а rollback() – в соответствующий блок except для отмены транзакции в случае возникновения ошибки:

try:
conn.begin ()
cursor = conn.cursor ()
# передать деньги от одного человека другому
cursor.execute ("UPDATE money SET amt = amt - 6 WHERE name = 'Eve'")
cursor.execute ("UPDATE money SET amt = amt + 6 WHERE name = 'Ida'")
cursor.close ()
conn.commit()
except MySQLdb.Error, e:
print "Transaction failed, rolling back. Error was:"
print e.args
try: # пустой обработчик исключения, если откат не удался
conn.rollback ()
except:
pass

Статьи по MySQL на эту тему:

Альтернативы транзакциям
Использование транзакций в программах на Java

Вернуться в раздел: MySQL / 15. Выполнение транзакций