Using Transactions in Python Programs
Problem
You want to perform a transaction in a DB-API script.
Solution
Use the standard DB-API transaction support mechanism.
Discussion
The Python DB-API abstraction provides transaction processing control
through connection object methods. The DB-API specification indicates
that database connections should begin with auto-commit mode disabled.
Therefore, when you open a connection to the database server, MySQLdb
disables auto-commit mode, which implicitly begins a transaction. End
each transaction with either commit() or
rollback().
The commit() call occurs
within a
try statement, and
the rollback() occurs within
the except clause to cancel the
transaction if an error occurs:
try:
cursor = conn.cursor ()
# move some money from one person to the other
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: # empty exception handler in case rollback fails
conn.rollback ()
except:
passBecome an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access