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.
Administrador de Sistemas, Programador, Docente y ahora resulta que también Blogger (peor es ser tictoker). Más de 20 años de experiencia en computación atendiendo nabos y resolviendo problemas, los cuales si no fuera por estos nabos, no habrían ocurrido en primer lugar. Escribo más que nada sobre tecnología y herramientas en general, además de algunos artículos con opiniones tan subjetivas como irrelevantes, así que si no te gustan, mejor madura y superalo.