![](https://www.analyticslane.com/storage/2024/05/ai-generated-1.jpg)
SQLite es una base de datos ligera y fácil de usar que no requiere la configuración de un servidor para su funcionamiento. En lugar de ello, almacena las bases de datos en archivos individuales, lo que la convierte en una herramienta extremadamente flexible y portátil. Lo que la convierte en una solución ideal para aplicaciones pequeñas, desarrollo y pruebas. La integración con SQLite con Python es nativa a través del módulo sqlite3 incluido por defecto en las instalaciones. Por lo que no es necesario ninguna instalación adicional para empezar a trabajar con bases de datos SQLite en Python. Así, combinar SQLite3 con Pandas es una opción que permite gestionar y analizar datos de forma eficiente y sencilla. En esta publicación, se explicará cómo conectar Pandas con una base de datos SQLite, cómo guardar e importar datos y cómo realizar consultas condicionales y actualizaciones.
¿Por qué usar SQLite3 con Pandas?
Cuando se necesita una base de datos en pequeños proyectos, escoger la combinación de SQLite3 con Pandas es una opción que aporta varias ventajas:
- Simplicidad: SQLite es un sistema de gestión de bases de datos ligero y sin servidor, lo que lo hace ideal para proyectos pequeños y medianos.
- Facilidad de Uso: Pandas proporciona una interfaz fácil de usar para trabajar con datos tabulares, y su integración con SQLite permite un manejo de datos eficiente.
- Portabilidad: Los archivos de base de datos SQLite son portátiles y pueden ser compartidos fácilmente.
- Rendimiento: Para operaciones de lectura y escritura ligeras, SQLite ofrece un rendimiento adecuado.
Esto es así siempre que no sea necesario trabajar con bases de datos muy grandes (más de 2 GB), en estos casos posiblemente sea necesario usar sistemas más robustos como PostgreSQL, MySQL o SQL Server.
Conectando a una base de datos SQLite
Para empezar a trabajar con SQLite en Pandas lo primero es importar la librerías necesarias (sqlite3
y pandas
) y realizar la conexión a una base de datos. Para ello solo se tiene que llamar a la función sqlite3.connect()
indicando como parámetro la ruta al archivo. Si la base de datos no existe, se creará automáticamente.
import sqlite3 import pandas as pd # Conectar a la base de datos conn = sqlite3.connect('base_de_datos.sqlite')
En este ejemplo, se crea una base de datos en un archivo llamado base_de_datos.sqlite
en la misma ruta que donde se ejecuta el script de Python.
Guardar datos en una tabla
Ahora que se ha iniciado la conexión con la base de datos, se puede guardar cualquier DataFrame en una tabla de esta base de datos. Para eso se debe usar el método to_sql()
que existe en todos los objetos DataFrame de Pandas. A continuación, se muestra como guardar los datos de unos clientes en una tabla clientes
de la base de datos.
# Crear un DataFrame de ejemplo data = { 'nombre': ['Juan', 'Ana', 'Luis'], 'edad': [28, 24, 30], 'gasto': [200, 150, 300] } df = pd.DataFrame(data) # Escribir el DataFrame en la base de datos df.to_sql('clientes', conn, if_exists='replace', index=False)
El método to_sql()
requiere como primer parámetro la tabla de la base de datos en la que se desean insertar los datos y como segundo la conexión. Además, se esto se han modificado el valor de dos parámetros opcionales:
if_exists
: Indica qué hacer si la tabla ya existe en la base de datos, las posibles opciones son:'fail'
: Lanza un error (por defecto).'replace'
: Elimina la tabla existente y crea una nueva.'append'
: Añade los datos del DataFrame a la tabla existente.
index
: SiTrue
(por defecto), escribe los índices del DataFrame como una columna en la tabla. Mientras que si el valor esFalse
, no escribe los índices.
Importar datos de una tabla
Ahora, una vez guardados los datos en una tabla, se pueden importar estos desde la base de datos. Para esto se debe usar el método read_sql_query()
indicando la consulta y la conexión a la base de datos. Lo que se muestra en el siguiente ejemplo.
# Leer los datos de la tabla 'clientes' en un DataFrame df_clientes = pd.read_sql_query("SELECT * FROM clientes", conn) print(df_clientes)
nombre edad gasto
0 Juan 28 200
1 Ana 24 150
2 Luis 30 300
Obteniendo como resultado un DataFrame con los datos de la consulta que se ha realizado.
Importar datos de forma condicional
En ciertas ocasiones, solamente es necesario importar los datos que cumplen ciertas condiciones. Aunque esto se puede resolver fácilmente en Pandas con filtros, se puede evitar que se importen más datos de lo necesario. Por ejemplo, si se desea obtener solamente los clientes con un gasto mayor a 200 se puede hacer como se muestra a continuación.
# Leer solo los datos donde el gasto es mayor a 200 df_gastos_altos = pd.read_sql_query("SELECT * FROM clientes WHERE gasto > ?", conn, params=(200,)) print(df_gastos_altos)
nombre edad gasto
0 Luis 30 300
Aunque se podría haber escrito directamente la consulta "SELECT * FROM clientes WHERE gasto > 200”
, en este caso se ha usado ?
como marcador de posición y los datos se han pasado mediante el parámetro params
para evitar una posible inyección SQL. Una buena práctica especialmente cuando los parámetros de la consulta los introduce el usuario.
Actualizar valores en la base de datos
Si es necesario actualizar datos se puede recurrir al método execute
de la conexión SQLite para ello. Por ejemplo, si se desea aumentar el gasto de todos los clientes en 50 unidades se puede usar.
# Actualizar los datos directamente en la base de datos conn.execute("UPDATE clientes SET gasto = gasto + 50") conn.commit() # Verificar la actualización df_actualizado = pd.read_sql_query("SELECT * FROM clientes", conn) print(df_actualizado)
nombre edad gasto
0 Juan 28 250
1 Ana 24 200
2 Luis 30 350
Cerrar la conexión con la base de datos SQLite
Finalmente, siempre es una buena práctica cerrar la conexión a la base de datos cuando se termina de trabajar con ella. Algo que se hace mediante el método close()
de la conexión.
# Cerrar la conexión conn.close()
Conclusión
Integrar SQLite3 con Pandas en Python es una opción a tener en cuenta cuando se necesita una base de datos pequeña para manejar y analizar datos. Especialmente si la base de datos está por debajo del gigabyte de tamaño. En esta entrada, se ha visto cómo conectar a una base de datos SQLite, guardar e importar datos, realizar consultas condicionales y actualizar registros. Lo que permite comenzar a trabajar con combinación de herramientas.
Imagen de Gerd Altmann en Pixabay
Deja una respuesta