Listing 2. Python Transaction Example

def addAttendee(name, seminar, paid):
  # Fetch the number of places left
  cursor.execute('select places_left'
                 ' from Seminars'
                 ' where ID=%s' % (seminar),)
  (places_left, )=cursor.fetchone()
  # If there are no places left, raise exception
  if places_left==0:
    raise ValueError,'Out of room:#%i' %(seminar,)
  # Add a row to the Attendees table
  cursor.execute("insert into Attendees "
                 "values (?,?,?)",
                 (name, seminar, paid) )
  # Decrease the places_left count of the selected
  # seminar
  cursor.execute("update Seminars set "
                 "places_left=%i where ID=%s"
                 % (places_left-1, seminar) )
  # Commit the changes
  db.commit()