Curso
¿Qué es SQLite?
Si conoces los sistemas de bases de datos relacionales, seguramente te suenen pesos pesados como MySQL, SQL Server o PostgreSQL. Sin embargo, SQLite es otro SGBDR muy útil, sencillo de instalar y de usar, que ofrece varias particularidades frente a otras bases de datos relacionales. Entre ellas:
- Sin servidores: no hay procesos de servidor que iniciar, detener o configurar. No hacen falta administradores de bases de datos que asignen instancias o gestionen permisos de acceso.
- Ficheros de base de datos simples: una base de datos SQLite es un único archivo ordinario en disco que puedes guardar en cualquier carpeta. Compartirla también es fácil: basta con copiar el archivo a una memoria USB o enviarlo por correo.
- Tipado manifiesto: la mayoría de motores SQL usan tipado estático: solo puedes guardar valores del tipo asociado a cada columna. SQLite, en cambio, usa tipado manifiesto, que permite almacenar cualquier cantidad de cualquier tipo de dato en cualquier columna, independientemente del tipo declarado. Ten en cuenta que hay excepciones, como las columnas clave primaria de tipo entero, que solo pueden almacenar enteros.
Como casi todo, también tiene limitaciones frente a otros motores. Por ejemplo, SQLite no permite hacer RIGHT ni FULL OUTER JOIN, y su naturaleza sin servidor puede ser una desventaja en seguridad y protección frente a usos indebidos. Aun así, es una herramienta potente y muy práctica en determinadas situaciones. Por ejemplo, en un proyecto reciente de análisis de redes sociales utilicé una base de datos SQLite para almacenar una edge list de millones de usuarios de Twitter de forma muy simple y eficiente.
En este tutorial para principiantes te mostraré cómo trabajar con una base de datos SQLite. Veremos la instalación de SQLite, la creación y operación con tablas, los comandos punto de SQLite y cómo usar consultas SQL sencillas para manipular los datos dentro de una base SQLite.
Una edge list o lista de adyacencia es una colección de listas no ordenadas que se usa para representar un grafo en el análisis de redes. Cada lista describe el conjunto de nodos vecinos de un vértice del grafo.
Cómo instalar y configurar SQLite
Lo primero es cómo llevar SQLite a tu ordenador. Es muy sencillo. Si consultas el tutorial SQLite with Python de Sayak Paul, verás que hay una herramienta GUI llamada DB Browser for SQLite con la que puedes empezar fácilmente. Sin embargo, para variar, te mostraré cómo usar la herramienta de línea de comandos, que además a veces prefiero.
Si usas Windows, ve a este sitio y descarga sqlite-tools-win32-x86-3270200.zip. Al descomprimir, deberías ver estos tres archivos:

A partir de ahí, iniciar la línea de comandos de SQLite es tan simple como hacer clic en la aplicación sqlite3, que abrirá la consola así:

Verás que, por defecto, SQLite usa una base de datos transitoria en memoria. La mayoría de las veces no querrás eso. En su lugar, crearemos una base nueva con el comando punto .open seguido del nombre que quieras darle al archivo de base de datos (mira abajo):

Así de fácil has creado una base de datos. Fíjate también en que es vital añadir .db al nombre para generar el archivo. La hemos llamado Tweet_Data.db porque usaré tuits para poblar las tablas.
Creación de tablas
Con la base creada, podemos pasar a crear nuestra tabla de tuits. Hay dos formas. La primera es importar un archivo .csv y convertirlo en tabla. Para ello, pon SQLite en modo csv con el comando punto .mode seguido de csv, y usa .import, que recibe un archivo (en este caso, un csv en la misma carpeta, pero puede ser cualquiera si indicas la ruta completa) y el nombre de tabla que quieras. También puedes mostrar los encabezados de columna con el comando punto .headers seguido de on. (Ver abajo)

Hecho esto, puedes usar .tables para listar todas las tablas disponibles en el archivo, y .schema seguido del nombre de una tabla para ver su estructura. Además, puedes ejecutar una consulta sencilla como SELECT * FROM Table_Name para comprobar que los datos están ahí.

Además de crear tablas importando archivos como csv, también puedes crearlas con CREATE TABLE e insertar filas nuevas con INSERT INTO. En el siguiente ejemplo verás cómo crear una tabla desde cero e insertar dos filas.
Nota: en la línea de comandos de SQLite, si quieres seguir escribiendo la misma consulta en la línea siguiente, como hago en el ejemplo, pulsa Intro cuando quieras un salto de línea. La consulta se ejecutará tras pulsar Intro cuando haya un punto y coma al final.

Exportar desde SQLite
Si en algún momento quieres exportar el resultado de una consulta a un archivo externo, como un csv, también puedes hacerlo con SQLite. Para una exportación limpia a csv, sigue un proceso parecido al de la importación. Primero, usa .header seguido de on y .mode seguido de csv. Luego, el comando punto .output seguido del nombre del archivo csv que quieras y, por último, ejecuta la consulta SQL que quieres exportar y sal de SQLite con .exit. Vamos a exportar a csv la tabla nueva que creamos en el paso anterior.

Aquí tienes el csv recién creado con los datos de Sample_Tweets_2.

Actualizar tablas
Además de crear y exportar tablas, también puedes usar las sentencias SQL UPDATE/SET y DROP TABLE para actualizar filas o eliminar una tabla por completo. En el siguiente ejemplo actualizaremos el segundo tuit de la tabla de juguete Sample_Tweets_2.

Ahora despidámonos de la tabla de ejemplo Sample_Tweets_2 y bórrala del archivo con DROP TABLE:

Usar una base de datos SQLite para manejar datos de Twitter
Ya conoces lo esencial para trabajar con una base SQLite y manipular tablas; solo te queda extraer información útil con consultas SQL. De momento, te mostraré un par de consultas relativamente simples que utilicé en mi proyecto de análisis de Twitter. Puedes verlo como un mini caso práctico para ilustrar una aplicación real de SQLite.
Empecemos con algo sencillo: encontrar todos los nombres de usuario únicos (screen names) en la tabla Sample_Tweets. En el proyecto para el que utilicé estos tuits, era esencial identificar a todas las personas únicas de las que recopilé tuits, ya que necesitaba recuperar a sus seguidores para crear la edge list que mencioné al principio.

26.860 usuarios únicos en la base de datos. Una muestra excelente teniendo en cuenta que los temas que estaba siguiendo eran localización web y traducción. Veamos ahora las 20 cuentas con más tuits en la muestra con una consulta algo más compleja (excluyendo retuits):

Mira por dónde: ¡la cuenta con más tuits es un bot! Aun así, el último de la lista, UweMuegge, resultó ser bastante influyente según varias métricas de red que calculé para el proyecto. Sin embargo, no fue el más relevante.
Por último, echemos un vistazo a algunos de los tuits que escribió UweMuegge con otra consulta SQL:

Parecen dos temas principales: ofertas de empleo en traducción y congresos de traducción. Tiene sentido que la gente del sector lo siga en Twitter.
Otra cosa que salta a la vista en la captura es una de las limitaciones de la interfaz de línea de comandos de SQLite: si los campos de texto son muy largos, no se muestran bien y cuesta leerlos. Por eso, en este caso conviene usar DB Browser for SQLite.
Resumen
En este tutorial has aprendido a crear bases de datos SQLite y a manipular tablas usando comandos punto y sentencias SQL. Además, has visto un pequeño caso práctico real donde utilicé SQLite para manejar datos de Twitter. ¡No está nada mal, enhorabuena!
Vale la pena destacar que SQLite brilla cuando lo combinas con R y Python. Puedes trabajar con bases SQLite desde Python usando el módulo sqlite3 (si quieres saber más, visita el tutorial SQLite with Python) o con R mediante RSQLite. De hecho, la edge list de seguidores de usuarios de Twitter que mencioné antes está guardada en una base SQLite que creé con RSQLite, añadiendo la red de seguidores de cada usuario a una tabla. En esa fase del proyecto, usar SQLite fue clave: un corte de luz o una actualización automática de Windows puede apagar tu ordenador de golpe y obligarte a empezar de cero la recolección de redes de seguidores. Debido a los límites de la API de Twitter, eso puede llevar unas cuatro semanas, así que reiniciar desde 0 no es nada deseable. Sin embargo, si vas guardando las redes de seguidores en una base de datos SQLite, aunque tu equipo se apague de forma abrupta, puedes reanudar desde el usuario siguiente al último guardado en la base, lo que ahorra muchísimo tiempo.
Este es solo un ejemplo de cómo las bases SQLite pueden ser una herramienta fantástica en el arsenal de cualquier profesional de datos. Te animo a seguir investigando sobre SQLite y SQL más allá de lo que hemos cubierto aquí. Sigue aprendiendo; ¡el cielo es el límite!
Si quieres aprender más SQL, haz el curso de DataCamp Introduction to Relational Databases in SQL.
