Google App Engine
maha võtta ei õnnestunud ja see jäigi ,,igavesti" sinna rippuma. Või rahaülekande puhul võeti
ülekandjalt andmebaasis saldot ülekande võrra väiksemaks, aga saaja saldo jäi samaks, kuna
selle suurendamise päring kukkus läbi. Kõigi nende probleemide vastu aitavadki transaktsioonid.
Transaktsioonid käivitatakse funktsiooniga db.run_in_transaction(func, [pos[, kwds]]) kus func
tähistab transaktsiooni sisaldavat funktsiooni, pos funktsioonile edastatav positsiooniargument
(näiteks võti kindla elemendi juurde, millega transaktsioon tehakse) ning kwds täiendavad
võtmesõna argumente, mida saab kasutada transaktsiooni teostamiseks.
def uuenda_kasutajat(key, nimi):
kasutaja = Kasutaja.get(key)
kasutaja.nimi = nimi
kasutaja.put()
class UuendaHandler(webapp.RequestHandler):
def get(self):
key = self.request.get('key')
nimi = self.request.get('nimi')
db.run_in_transaction(uuenda_kasutajat, key, nimi)