23.9. Integración de bases de datos Python: transacciones
En programación, una transacción es una secuencia de operaciones lógicas realizadas como una sola unidad de trabajo. Si todas las operaciones tienen éxito, la transacción se confirma (o "comprometida"). Si se produce un error en cualquiera de las operaciones, la transacción se revertirá y el estado de la base de datos se restaurará al estado anterior al inicio de la transacción.
Las transacciones son una parte fundamental de cualquier aplicación de base de datos, ya que ayudan a garantizar la integridad de los datos. En Python, podemos gestionar transacciones utilizando el módulo `sqlite3`, que proporciona una interfaz para la base de datos SQLite.
Iniciar una transacción
Para iniciar una transacción, primero debemos establecer una conexión a la base de datos. Esto se puede hacer usando el método `connect()` del módulo `sqlite3`.
importar sqlite3 # Establecer una conexión a la base de datos. conexión = sqlite3.connect('mi_base de datos.db')
Una vez establecida la conexión, podemos iniciar una transacción usando el método `cursor()` para obtener un objeto cursor, que podemos usar para ejecutar comandos SQL.
Ejecución de operaciones
Podemos realizar operaciones en una transacción usando el método `execute()` del objeto cursor. Por ejemplo, podemos insertar un nuevo registro en una tabla usando el siguiente código:
# Crea un objeto de cursor. cursor = conexión.cursor() # Insertar un nuevo registro. cursor.execute("INSERTAR EN my_table VALORES (?, ?, ?)", (valor1, valor2, valor3))
Si queremos ejecutar varias operaciones como parte de una sola transacción, podemos hacerlo ejecutando varias declaraciones `execute()` antes de confirmar la transacción.
Cometer o revertir una transacción
Una vez que todas las operaciones se hayan realizado con éxito, podemos confirmar la transacción utilizando el método `commit()` de la conexión. Esto guardará todos los cambios en la base de datos.
# Confirmar la transacción. conexión.commit()
Si ocurre un error en cualquiera de las operaciones, podemos revertir la transacción usando el método `rollback()` de la conexión. Esto deshace todos los cambios realizados desde el inicio de la transacción.
# Revertir la transacción. conexión.rollback()
Cerrar la conexión
Después de finalizar una transacción, siempre debemos cerrar la conexión a la base de datos usando el método `close()` de la conexión. Esto libera todos los recursos utilizados por la conexión.
# Cerrar la conexión. conexión.cerrar()
La gestión de transacciones es una parte esencial del trabajo con bases de datos en Python. Al utilizar transacciones, podemos garantizar que nuestras aplicaciones sean sólidas y que nuestros datos permanezcan consistentes incluso cuando se produzcan errores.
En resumen, la integración de Python con las bases de datos y el manejo de transacciones son fundamentales para garantizar la coherencia y la integridad de los datos. A través del módulo `sqlite3`, Python ofrece una interfaz intuitiva y efectiva para manejar transacciones de bases de datos.