Viajes, Bases De Datos Y Python. Que Comience La Aventura!
En este blog veremos una breve pero muy útil introducción al manejo y creación de base de datos a través de Python, mientras vemos algunos sitios que valen la pena ser visitados. La idea es crear nuestra propia base de datos con destinos turísticos y para esto escogeremos sitios al azar para ser registrados en la base de datos. Luego, esta información será extraída y presentada.Sabemos que existen muchas formas de almacenar datos. Por ejemplo cuando manejamos archivos txt, xlsx que a su vez son formas simples, sencillas de guardar datos. En este caso manejaremos SQLite. Esta es una base de datos que no demanda muchos recursos, es flexible y lo mejor es que puede ser manejada con Python. Si quieres saber un poco más de SQLite, te invito a que revises el blog What Is SQLite and How To Install It? que esta publicado en la pagina de DataSource.ai.Ahora que sabemos que manejaremos SQLite a través de Python, vamos a darle un vistazo general de lo que necesitaremos para empezar a ver algunos sitios turísticos en LATAM.Crear un espacio virtual para almacenar toda la información tales como librerías,base de datos y el notebook.Descargar SQLite.Crear la base de datos.Conectarnos a la base de datos.Crearemos una tabla. Almacenaremos datos.Guardaremos y presentaremos datos.Ya tenemos nuestro plan a seguir. Es la hora de comenzar este viaje a través de los pasos anteriormente mencionados, e iniciarnos en el manejo de base de datos con Python.Primero, descargamos virtualenv para configurar nuestro espacio virtual. Para eso utilizaremos un pip command el cual es pip install virtualenv. También, puedes revisar el siguiente link https://pypi.org/project/virtualenv/.Una vez descargado virtualenv, creamos un directorio en nuestro PC. Esto, para organizar nuestro espacio de trabajo. Puedes hacerlo con “mkdir virtual_env”.Ya estando en el path de ese directorio, solo debemos seguir los pasos de abajo. Estos fueron ejecutados en un sistema operativo windows con Powershell. Para crear nuestro ambiente virtual, corremos este comando. virtualenv virtual_env/virt1Luego, activamos este ambiente virt1 con el siguiente comando..\virt1\Scripts\activateDespués, veremos que el ambiente sobresale así (virt1). También, usamos el comando pip list para listar lo que se tiene en ese ambiente virtual.Ya se ha creado el ambiente virtual virt1, ahora descarguemos SQLite3 y creemos nuestra base de datos. Para esto solo basta con correr pip install db-sqlite3. Puedes ver el link que está en la parte inferior.https://pypi.org/project/db-sqlite3/Luego, podremos observar SQLite3 instalado. Después, solo es crear un archivo con nombre database.db y también nuestro notebook donde usaremos Python para administrar nuestra base de datos.Una vez instalado todo lo necesario, solo es abrir Jupyter notebook e importar SQlite3 como sigue a continuación.Luego, creamos nuestra conexión con la base de datos previamente creada.El siguiente paso es solo crear nuestra tabla. Esta será llamada “Destinos” y estará compuesta por las siguientes columnas.PaísSitio Puntaje DescripciónEs importante recordar que los puntajes simplemente son valores al azar, ya que todo destino vale la pena ser visitado. Con el comando connection.execute, podemos realizar muchas acciones como crear tablas, insertar datos, eliminar y seleccionar. Observemos un ejemplo de como insertar nuestro primer destino.Es importante denotar, que no solo basta ejecutar el INSERT INTO para guardar nuestros datos. Para eso, debemos correr connection.commit() después para guardar cualquier cambio establecido en nuestra base de datos.Veamos, si es verdad que pudimos guardar nuestro primer destino. Para ello, la consulta será almacenada en una variable llamada data.De qué tipo será esta variable?Como podemos observar esta variable es de tipo Cursor. Luego, veremos que podemos instanciar un objeto de tipo Cursor para seleccionar y mostrar nuestros datos. Ahora, que sabemos que data es de tipo Cursor, podemos llamar uno de sus métodos para mostrar el output del SELECT.Como podemos observar este fue el primer destino que almacenamos, y lo muestra como una variable de tipo tuple.Qué pasaría si quisiéramos utilizar data.fetchone() una vez más, para mostrar el destino de argentina?.El resultado es un None como respuesta, esto es debido a que tenemos que ejecutar el comando SELECT para nuevamente ejecutar la consulta y mostrar el output una vez más.Como se que muchos de ustedes no quieren ir solo a argentina, insertemos más destinos para visitar. Para esto, crearemos una lista llamada datos_destinos. Estos pueden ser algunas sugerencias, agreguen más destinos según su preferencia.El siguiente paso es sólo iterar en la lista y agregar los destinos antes guardados.Recordemos, que necesitamos el connection.commit() para guardar los cambios.Ejecutemos un SELECT y guardamos el resultado en una variable llamada all_data. Luego, iteramos sobre ella y veamos que obtenemos. También, podemos hacer uso del método fetchall(), para mostrar nuestra query. Para esto guardaremos el resultado en una variable llamada gather_data.Supongamos que por error se ejecutó un INSERT INTO a un mismo destino. En este caso por error guardamos a Argentina nuevamente como destino y tenemos las mismas entradas 2 veces.Observemos la primera y última entrada de all_data. Podemos ver que esta Argentina 2 veces y realmente queremos otro destino ya que Argentina fue el primero. Para ello, eliminaremos la última entrada con el comando DELETE.Ahora, verificamos.En esta última parte, crearemos un objeto Cursor como habíamos mencionado al principio. Luego, mostraremos los datos y finalmente usaremos Matplotlib para graficarlos.Es importante ejecutar el comando connection.close() para cerrar la conexión con la base de datos si ya términos de ejecutar cualquier acción.Finalmente con Matplotlib visualizamos nuestros destinos y sus respectivos puntajes.Todo viaje tiene sus inicios, espero que esta introducción a base de datos con Python los lleve a grandes destinos.
Danilo Galindo
May 6, 2020