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
with conex:abre un bloque de transacción.- Ambas actualizaciones se confirman juntas si hay éxito.
- Cualquier excepción revierte la transferencia completa.
Palabras clave y builtins usados aquí
exceptprinttrywith
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.
Paso 3 de 3 en Bases de datos; paso 16 de 41 en Herramientas de dominio.