Responsive image Libreria hecha en python para BI y Análitica

Test

¿Que hace ?

ArmadilloSQL es una libreria para conectarnos a diferentes motores de bases de datos relacionales y hacer operaciones como ingestas masivas, ejecutar un archivo sql externo, crear diferentes cursores para diferentes motores de bases de datos.

Es una solución rápida para manipular datos en diferentes motores de base de datos relacionales, de momento funciona con mysql y postgresql, en las próximas versiones tendremos Oracle, SQL server, SQLLite entre otros.

Las características clave son:

  • Rápido: Alto rendimiento para hacer ingestas masivas con sqlalchemy, usa la tenica de cargas por lotes para hacer insersion de grandes volumnes de datos.
  • Rápido para codificar: aumente la velocidad para desarrollar soluciones BI y análitica entre un 100% y un 200%.
  • Menos errores: Reduzca aproximadamente el 40% de los errores inducidos por humanos (desarrolladores).
  • Fácil: Diseñado para que sea fácil de usar y aprender. Menos tiempo leyendo documentos.
  • Corto: Minimiza la duplicación de código. Varias características de cada declaración de parámetro. Menos errores.

Ejemplo de uso

1. Carpeta conexion para almacenar todos los archivos de cadenas de conexión .json

			mkdir conexion && cd conexion
			

2. Crear archivo conexión

Para Mysql el archivo `coneccion_mysql.json` tiene la siguiente estructura:

		 {   
			"database_motor": "mysql", 
			"database_username" : "root" ,
			"database_password" : "" ,
			"database_ip" : "localhost",
			"database_name" : "prueba",
			"database_driver": "mysql+mysqlconnector",
			"database_port" : 3306,		
			"database_options" : "" 
		 }
			

Para PostgreSQL el archivo coneccion_postgresql.json tiene la siguiente estructura:

		  {
			"database_motor": "postgresql",
			"database_username" : "postgres" ,
			"database_password" : "clave" ,
			"database_ip" : "localhost",
			"database_name" : "name_bd",
			"database_driver": "postgresql+psycopg2",
			"database_options" : "dbo,public" 
		   }
			

3. Carpeta rutinas_sql para almacenar todos los archivos .sql

			mkdir rutinas_sql && cd rutinas_sql
			

4. Si utiliza anaconda puede crear un entorno por separado para su programa (opcional)

			conda create -n nuevo_proyecto python=3.7			 
			
			conda activate nuevo_proyecto
			

5. Navegue hasta la carpeta que creó "rutinas_sql" e instale las dependencias de armadillosql.

                         pip install -r requirements.txt
			

6. Crear archivo main.py con:

			# PASO 1 IMPORTAR LIBRERIA
			from armadillosql import Armadillosql
			import json

			# PASO 2 CREAR FUNCION PARA CONSULTAR LA CADENA DE CONEXIÓN
			def get_config(bd):
				"""
				Recibe el nombre de la conexión json creada anteriormente
				"""
				try:            
					with open('conexion/' + bd +'.json') as f_in: 
						json_str = f_in.read()
						return json.loads(json_str)
				except:
					return "error"

			# PASO 3 INSTANCIA DE armadillosql
			try:
				sql = Armadillosql(get_config('coneccion_mysql')) 
			except Exception as e:
				print("[Error] Problemas con la cadena de conexión " + str(e))


			#PASO 4 DECLARAR VARIABLE CON LA UBICACIÓN DE LAS RUTINAS Y DIC CON LOS PARAMETROS
			folder = 'rutinas_sql/'
			params = {"variable" : 'GLOBAL'}

			#PASO 5 USANDO UNO DE LOS METODOS DE LA LIBRERIA
			"""
			Ejecuta un archivo especificado en filePath si tiene 
			devolucion entonces retorna un df de lo contrario
			no retorna resultados
			"""
			df = sql.executeFile(folder + 'query.sql',params,devolucion=True)

			



Estructura Recomendada


              rutinas_sql 
                        -------------- query1.sql
                        -------------- query2.sql
			-------------- query3.sql
              conexion
                        -------------- coneccion_mysql.json
			-------------- coneccion_postgresql.json
	      ficheros
                        -------------- df1.csv
			-------------- df2.csv		
	      log.log
	      armadillosql.py	
	      main.py
         

rutinas_sql: Se almacenan todas las rutinas sql que serán llamadas por la clase Armadillosql

conexion: String de conexión para cada motor de datos en formato json

log: logs del proceso, se usa la libreria logging para este proceso

armadillosql: La clase principal que contiene métodos para el manejo de datos en bases de datos relacionales.

ficheros: En esta carpeta se encuentran todos aquellos ficheros de entrada ó salida del proceso.

main.py: Este es el archivo princial en donde los usuarios manipularian las diferentes clases y métodos que ofrece armadillosql.



Creador

Leonardo Patiño Rodriguez

"Ingeniero de Sofware con más de 5 años trabajando con python para ciencia de datos."

Sitio Web