En lo personal no soy de publicar código o publicar repositorios, mucha veces porque lo que hago lo hago por trabajo y no es ético liberarlo incluso cuando se tratan de cosas genéricas y en otro caso son cosas interesantes solo que pequeñas como para publicar un proyecto.

Sin embargo una de las mejores cosas que tiene Python es que aparte de ser un gran lenguaje tiene un repositorio con millones de paquetes al mejor estilo de repositorio Linux que permite buscar e instalar librerías para casi todo lo que necesitemos, no importa el tamaño sino la funcionalidad que aporte.

Con motivo de crear un paquete y publicarlo es que arranque con una clase sencilla que utilizó para realizar consultas de forma sencilla a la base de datos, originalmente la idea surgió hace años con PHP y ahora que arranque con Python decidí probarlo, aun faltan muchas funciones sin embargo ya me servía.

En otro artículo ya mostraré el paso a paso para publicar  en los repositorios aunque en este artículo solo me concentrare en la clase publicada, en este caso para Python 3, funciona perfecto en 2.7 sin embargo no logré poder instalarlo desde pip, es algo a perfeccionar igual.

Instalar EasyMySQL

pip install easymysql

Si les da algún error por tener una versión menor de Python pueden utilizar

pip3 install easymysql

Igualmente pueden visitar el repositorio de la librería aqui o descargar directamente el archivo desde aqui y utilizarlo en cualquier versión.

Conectar a la base de datos

#!/usr/bin/python

from easymysql.mysql import mysql

my = mysql('localhost','user_db','pass_db','db_name')

Insertar datos

Insertar datos es sumamente facil, solo hay que pasarle dos parámetros, el primero es el nombre de la tabla y el segundo un array con los datos a insertar:

my.insert('table_name',{ 
'field_1':'value_1',
'field_2':'value_2',
'field_3':'value_3',
})

Donde el array será Clave-Valor donde clave corresponde con el nombre del campo de la tabla y el valor el valor a insertar.

Actualizar datos

Actualizar datos es similar a insertar solo que ahora le pasamos 3 datos, primero el nombre de la tabla, en segundo lugar el array con los datos a actualizar, mismo formato de array Clave-Valor que al insertar.

Por último el tercer parámetro es un array Clave-Valor con los datos del where o una cadena de texto SQL

my.update('table_name',{ 
'field_1':'value_1',
'field_2':'value_2',
'field_3':'value_3',
},{
'id':300
})

En el ejemplo anterior los datos del 3 parámetro (el array) toma los datos y forma una cadena SQL estándar concatenados con AND, ejemplo:

my.update('table_name',{ 
'field_1':'value_1'
},{
'field_2':'value_3',
'field_3': 'value_3'
})

Esto se transformara en:

UPDATE table_name SET field_1=value_1 
WHERE field_2='value_2' AND field_3='value_3'

En el siguiente caso, el tercer parámetro en lugar de ser un array enviamos una cadena:

my.update('table_name',{ 
'field_1':'value_1',
'field_2':'value_2',
'field_3':'value_3',
},
'field_2=value_2 OR field_3=value_3
)

La sentencia anterior se traduce en una sentencia SQL como la siguiente:

UPDATE table_name SET field_1=value_1,field_2=value_2,field_3=value_3
WHERE field_2='value_2' OR field_3='value_3'

Buscar y listar datos

Los select funcionan bastante parecidos que los casos anteriores, debemos pasarle el nombre de la tabla, el segundo parámetro es un array o un string con la consulta WHERE, en caso de omitir tarea los datos de toda la tabla, opcionalmente como tercer parámetro podemos establecer el orden

Para filtar datos:

lst = my.select('table_name', {'field_1': value_1})

lst = my.select('table_name', "field_1='value_1'")

#Si es un solo resultado
[{'field_1': 'value_1', 'field_2': 'value_2','field_3':'value_3'}]

#Si son varios
[{'field_1': 'value_1', 'field_2': 'value_2','field_3':'value_3'},
{'field_1': 'value4', 'field_2': 'value_5','field_3':'value_6'},
{'field_1': 'value_7', 'field_2': 'value_8','field_3':'value_9'}]

O se puede generar un WHERE con SQL estándar con LIKE, OR, >, <, etc

lst = my.select('table_name', "field_1 LIKE '%value%')

Clausula Order

Técnicamente la cláusula ORDER no es solo ORDER sino que podemos colocar cualquier sentencia SQL que vaya despues del WHERE

lst = my.select('table_name', "field_1 LIKE '%value%',order='LIMIT 10')
lst = my.select('table_name', "field_1 LIKE '%value%',order='LIMIT 1,10')
lst = my.select('table_name', "field_1 LIKE '%value%',order='ORDER BY id DESC')
lst = my.select('table_name', "field_1 LIKE '%value%',order='ORDER BY id DESC LIMIT 5')
lst = my.select('table_name', "field_1 LIKE '%value%',order='ORDER BY id DESC LIMIT 1,10')

Recorrer los datos

Para recorer los datos solo se necesita un for:

lst = my.select('table_name')

for item in lst:
    print(item)

for item in lst:
    print(item['field_1'])
    print(item['field_2'])
    print(item['field_3'])

Conclusion

Es una clase sumamente sencilla que sin embargo siempre me ha sido de gran utilidad para interactuar con la base de datos, aun espero incorporar algunas funciones mas que tenia en la version original para PHP sin embargo es completamente funcional, es muy sencilla de incorporar por ejemplo a scripts que deban guardar logs en una base de datos o que deban traer datos de la misma para realizar operaciónes.

Leave a Reply

Your email address will not be published. Required fields are marked *

Discover more from Alvaro De León

Subscribe now to keep reading and get access to the full archive.

Continue reading