typestar

Transacciones en SQLite en Python

Agrupar escrituras para que todas se confirmen o todas se reviertan.

import sqlite3

conex = sqlite3.connect(":memory:")
conex.execute("CREATE TABLE accounts (name TEXT, cents INTEGER)")
conex.executemany("INSERT INTO accounts VALUES(?, ?)",
                 [("ada", 1000), ("grace", 0)])
conex.commit()

try:
    with conex:  # confirma si hay éxito, revierte ante cualquier excepción
        conex.execute("UPDATE accounts SET cents = cents - 500 WHERE name=?",
                     ("ada",))
        conex.execute("UPDATE accounts SET cents = cents + 500 WHERE name=?",
                     ("grace",))
except sqlite3.Error:
    print("transferencia revertida")
conex.close()

Cómo funciona

  1. with conex: abre un bloque de transacción.
  2. Ambas actualizaciones se confirman juntas si hay éxito.
  3. Cualquier excepción revierte la transferencia completa.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
17
Caracteres a escribir
527
Tokens
103
Ritmo de tres estrellas
110 tpm

Al ritmo de tres estrellas de 110 tokens por minuto, este intento toma unos 56 segundos.

Escribe este fragmento

Paso 3 de 3 en Bases de datos; paso 16 de 41 en Herramientas de dominio.

← Anterior Siguiente →