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:
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)
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.
"Ingeniero de Sofware con más de 5 años trabajando con python para ciencia de datos."
Sitio Web