programación

Uso de SQLite3 en Python

SQLite3 es una biblioteca escrita en C que proporciona un sistema de gestión de bases de datos relacional que no requiere un servidor separado de base de datos. En lugar de eso, la base de datos SQLite se almacena en un solo archivo, lo que la hace ideal para aplicaciones que requieren una implementación ligera de almacenamiento de datos. En Python, puedes interactuar con bases de datos SQLite utilizando el módulo sqlite3, el cual viene incluido en la biblioteca estándar de Python.

Para utilizar SQLite3 en Python, primero necesitas asegurarte de tener instalada la biblioteca. Sin embargo, dado que es parte de la biblioteca estándar, normalmente no necesitas instalar nada adicional. Una vez que tienes Python instalado en tu sistema, puedes comenzar a trabajar con SQLite3.

El primer paso es importar el módulo sqlite3 en tu script de Python:

python
import sqlite3

Después de eso, puedes abrir una conexión a una base de datos SQLite utilizando la función connect(), especificando el nombre del archivo de la base de datos. Si el archivo no existe, SQLite lo creará automáticamente por ti. Aquí tienes un ejemplo de cómo abrir una conexión a una base de datos llamada «mi_base_de_datos.db»:

python
conexion = sqlite3.connect('mi_base_de_datos.db')

Una vez que tienes una conexión establecida, puedes crear un objeto cursor que te permitirá ejecutar comandos SQL en la base de datos. Puedes pensar en el cursor como en un puntero que te permite recorrer los resultados de una consulta. Para crear un cursor, simplemente llama al método cursor() en tu objeto de conexión:

python
cursor = conexion.cursor()

Con el cursor en mano, estás listo para ejecutar comandos SQL. Por ejemplo, para crear una tabla en tu base de datos, puedes usar el método execute() del cursor y pasarle la instrucción SQL como una cadena:

python
cursor.execute('''CREATE TABLE usuarios ( id INTEGER PRIMARY KEY, nombre TEXT, edad INTEGER )''')

Esta consulta SQL crea una tabla llamada «usuarios» con tres columnas: «id», «nombre» y «edad». La columna «id» se define como un INTEGER y se establece como clave primaria utilizando la cláusula PRIMARY KEY. Las columnas «nombre» y «edad» son de tipo TEXT e INTEGER respectivamente.

Después de ejecutar el comando execute(), debes llamar al método commit() en tu objeto de conexión para confirmar los cambios en la base de datos:

python
conexion.commit()

Ahora que tienes una tabla en tu base de datos, puedes insertar datos en ella utilizando la instrucción SQL INSERT. Por ejemplo:

python
cursor.execute("INSERT INTO usuarios (nombre, edad) VALUES (?, ?)", ('Juan', 30))

Esta consulta SQL inserta un nuevo registro en la tabla «usuarios» con el nombre «Juan» y la edad «30». La ventaja de utilizar parámetros de consulta (?) en lugar de concatenar directamente los valores en la cadena SQL es que ayuda a prevenir ataques de inyección de SQL y hace que tu código sea más seguro.

Después de insertar datos, nuevamente necesitas llamar a commit() para confirmar los cambios en la base de datos.

python
conexion.commit()

Para recuperar datos de la base de datos, puedes ejecutar una consulta SELECT y luego usar métodos como fetchone() o fetchall() en tu cursor para obtener los resultados. Por ejemplo:

python
cursor.execute("SELECT * FROM usuarios WHERE edad > ?", (25,)) filas = cursor.fetchall() for fila in filas: print(fila)

Esta consulta SQL selecciona todos los usuarios cuya edad es mayor que 25. El valor de 25 se pasa como un parámetro a la consulta utilizando la sintaxis de parámetros de consulta (?). Luego, los resultados se recuperan utilizando fetchall(), que devuelve una lista de tuplas representando cada fila seleccionada. Puedes iterar sobre estas filas y trabajar con los datos como desees.

Finalmente, después de terminar de trabajar con la base de datos, es importante cerrar tanto el cursor como la conexión para liberar los recursos del sistema:

python
cursor.close() conexion.close()

Esto es solo una introducción básica a cómo utilizar SQLite3 en Python. SQLite3 ofrece muchas más funcionalidades y características que puedes explorar, como consultas JOIN, transacciones, índices, y más. Además, Python ofrece herramientas adicionales, como ORMs (Object-Relational Mappers) que pueden simplificar aún más la interacción con bases de datos SQLite.

Más Informaciones

Por supuesto, continuemos profundizando en el uso de SQLite3 en Python.

Una vez que hayas creado una tabla en tu base de datos SQLite, puedes realizar una variedad de operaciones sobre ella, como insertar, actualizar, eliminar y consultar datos.

Para insertar datos en una tabla, puedes utilizar la instrucción INSERT INTO. Por ejemplo, supongamos que tienes una tabla llamada «productos» con columnas para el nombre del producto, el precio y la cantidad en stock. Puedes insertar un nuevo producto de la siguiente manera:

python
cursor.execute("INSERT INTO productos (nombre, precio, cantidad) VALUES (?, ?, ?)", ('Camiseta', 19.99, 100))

Esta consulta insertará un nuevo producto llamado «Camiseta» con un precio de 19.99 y una cantidad de 100 unidades en stock. Nuevamente, estamos utilizando parámetros de consulta (?) para evitar la concatenación directa de valores en la cadena SQL.

Para actualizar datos en una tabla, puedes utilizar la instrucción UPDATE. Por ejemplo, si deseas cambiar el precio de la camiseta a 24.99, puedes hacerlo de la siguiente manera:

python
cursor.execute("UPDATE productos SET precio = ? WHERE nombre = ?", (24.99, 'Camiseta'))

Esta consulta actualizará el precio de todos los productos con el nombre «Camiseta» a 24.99.

Para eliminar datos de una tabla, puedes utilizar la instrucción DELETE FROM. Por ejemplo, si deseas eliminar todos los productos con un precio superior a 50, puedes hacerlo así:

python
cursor.execute("DELETE FROM productos WHERE precio > ?", (50,))

Esta consulta eliminará todos los productos cuyo precio sea mayor a 50.

Además de estas operaciones básicas de CRUD (Crear, Leer, Actualizar, Eliminar), SQLite3 y Python te permiten realizar consultas más complejas utilizando la instrucción SELECT. Puedes realizar consultas que incluyan filtros, ordenamientos, agrupamientos y más. Por ejemplo, para seleccionar todos los productos ordenados por nombre en orden ascendente, puedes hacer lo siguiente:

python
cursor.execute("SELECT * FROM productos ORDER BY nombre ASC")

Esta consulta seleccionará todos los productos de la tabla «productos» y los ordenará por nombre en orden ascendente. Puedes modificar la cláusula ORDER BY para ordenar los resultados por diferentes columnas y en diferentes direcciones (ASC para ascendente, DESC para descendente).

Además de realizar operaciones directas en la base de datos, también puedes utilizar transacciones para agrupar múltiples operaciones en una única unidad atómica. Esto es útil cuando necesitas realizar cambios en la base de datos que deben ser consistentes, es decir, que todas las operaciones se completen con éxito o ninguna de ellas se realice. Puedes iniciar una transacción utilizando el método begin() en tu objeto de conexión y luego confirmarla o revertirla utilizando commit() o rollback() respectivamente.

python
conexion.begin() try: # Realizar operaciones en la base de datos cursor.execute("INSERT INTO productos (nombre, precio, cantidad) VALUES (?, ?, ?)", ('Pantalón', 29.99, 50)) cursor.execute("UPDATE productos SET precio = ? WHERE nombre = ?", (39.99, 'Camiseta')) conexion.commit() # Confirmar la transacción si todas las operaciones se completan con éxito except: conexion.rollback() # Revertir la transacción si ocurre algún error

Este bloque de código inicia una transacción, realiza algunas operaciones en la base de datos y luego confirma la transacción si todas las operaciones se completan con éxito. Si ocurre algún error durante el proceso, la transacción se revertirá y se desharán todos los cambios realizados.

En resumen, SQLite3 en Python te ofrece una forma potente y flexible de interactuar con bases de datos SQLite. Desde la creación de tablas hasta la ejecución de consultas complejas y el manejo de transacciones, tienes a tu disposición una amplia gama de herramientas para trabajar con tus datos de manera eficiente y segura. ¡Espero que esta información te sea útil para aprovechar al máximo SQLite3 en tus proyectos de Python!

Botón volver arriba

¡Este contenido está protegido contra copia! Para compartirlo, utilice los botones de compartir rápido o copie el enlace.