EasyMysql

EasyMySQL, una librería para manejo de MySQL en Python

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.

Ver comentarios

  • Hello

    This is Wordpress actually. Is true, Wordpress is the most attacked CMS but it is also possible always have a secure site .

    You can find security plugins like Wordfence or iTheme and you should always update Wordpress and plugins

    Server security always is important, I recommend https://www.infranetworking.com/

    Best Regards

  • Hello Justin

    I like minimalist themes, go ahead, you can steal it, but isn't mine, I use "Minimal Portfolio" theme but I made several modification to css, I removed head banner , menu, I modify size and color fonts, etc

    Best regards

Compartir
Publicado por
Alvaro De León

Entradas recientes

Nueva pagina de Publicaciones

La idea principal detrás de este blog es marca personal, el blog es para centralizar…

5 days hace

Migrar una maquina virtual desde VirtualBox a KVM

El migrar el disco duro es bastante sencillo como se verá a continuación, la principal…

2 weeks hace

Instalar QEMU/KVM y Virtual Machine Manager

Cuando se trata de virtualización en el escritorio, una de las primeras opciones son sin…

4 weeks hace

Instalar adaptador WIFI TP-Link AX 1800/ Archer TX20U en Debian y Ubuntu

Siempre he sido un ferviente defensor de una conexión por cable UTP para trabajar por…

2 months hace

Nuevo dominio para el blog, otra vez!!!

Al fin pude recuperar alvarodeleon.com, no es que lo hubiera perdido, fue peor, lo deje…

3 months hace

Activar LOGS de consultas SQL en MySQL

Por defecto en MySQL, lo normal es solo tener el log de errores activado, sin…

7 months hace