jueves, 26 de enero de 2017

Insertar datos de un archivo excel a una base de datos




Saludos y gracias por leer mis publicaciones, en mi corta experiencia en el desarrollo de software he aprendido, que no solo es importante crear programas que  resuelvan una  situación especifica sino que ademas es necesario crear soluciones para gestionar los datos que utiliza una aplicación. 

Un ejemplo de esto: Imaginemos que  desarrollamos un sistema de gestión de datos para una empresa determinada, que requiere llevar los datos de sus empleados, los departamentos, los cargos , entre otros. Ahora imaginemos que en la empresa se inicia el proceso de carga inicial de datos en el sistema y que los usuarios encargados de esto tienen que registrar información correspondiente a una gran cantidad de empleados (digamos que unos 100),  lo cual no seria muy agradable para ellos sin mencionar el tiempo que le dedicaran a esta tarea utilizando la interfaz que ofrece el sistema para ello, aquí surge  la necesidad de agilizar este proceso  .

Existen empresas en las cuales se hace uso de microsoft  excel para registrar parte de la información que utilizan en sus actividades, por lo cual surge la posibilidad de que gran parte de los datos necesarios para el sistema se encuentren en archivos excel, siendo este el caso podemos ofrecer a los usuarios una solución que lleve los datos del archivo excel a la base de datos de nuestro sistema , a continuación les muestro en pasos una solución sencilla con python: 

  • Debemos asegurarnos que la información a cargar se encuentre organizada de tal manera que concuerde con la tabla en la cual realizaremos  la insercion  de los datos, para este ejemplo realizare la carga de 8 registros que contienen información básica de empleados y que se encuentra en un archivo excel llamado: usuarios.xlsx, la cual sera cargada a la tabla empleados  que pertenece a la base de datos que he llamado prueba.


tabla empleados donde se cargaran los datos
Tabla empleados donde se insertaran los registros



Datos a cargar en la base de datos
Datos que desean insertarse en la tabla empleados





  • El siguiente paso es poder acceder al archivo: usuarios.xlsx , para esto voy a utilizar la librería openpyxl  que permite manipular archivos excel con python, al final de la entrada encontraran los enlaces de su documentación oficial.
Recorrer archivo excel para obtener los datos que desean cargarse 





a continuación la explicación del código anterior  utilizado para obtener los datos desde el archivo excel:



  • Linea 1: se importa el modulo openpyxl el cual nos provee las funciones utilizadas para trabajar con archivos excel.
  • Linea 4: se utiliza el metodo; openpyxl.load_workbook() , para cargar el archivo donde se encuentran los datos.
  • Linea 5: se obtiene la hoja del archivo excel en donde se encuentran los datos mediante el metodo: get_sheet_by_name() , el cual nos permite obtener una hoja del archivo pasando como parámetro su nombre, en mi caso es 'empleados'.
  • Linea 7: indica la fila que contiene el primer registro que desea insertarse.
  • Linea 8: indica la fila que contiene el ultimo registro que desea insertarse.
  • Linea 9: consiste en una lista vacia llamada: registros , en la cual almacenare los datos recolectados desde el archivo excel.
  • desde la linea 12 a la linea 17: se recorren las filas especificadas, se obtienen y se van guardado en la lista empleados los tres datos de cada fila que corresponden a los campos: nombre, apellido y usuario.
  • en la lineas 19 y 20 , se recorre la lista empleados que contiene los datos obtenidos desde el archivo excel y se imprimen los datos correspondientes a cada registro lo cual nos da:
Datos obtenidos desde el archivo excel

  • Nuestro siguiente paso es almacenar los datos obtenidos en la tabla empleados, para esto utilizaremos la libreria: MySQLdb , al final coloque un enlace que contiene documentación relacionada.
Coneccion a la base de datos e inserción de los registros

  • En la linea 24  usamos el método: MySQLdb.connect(), por medio del cual nos conectamos a la base de datos : que se encuentra en el servidor local : 'localhost' ingresaremos como usuario 'root', en mi caso la base de datos no posee contraseña y cuyo nombre es: 'prueba'.
  • Linea 25: creamos el puntero .
  • Linea 26 inicia el recorrido sobre la lista registro para insertar sus elementos en la tabla empleados.
  • Las lineas 27 y 28 deben formar una sola linea en la imagen aparecen como dos debido a que se me hizo mas facil poder mostrarla, en esta linea se crea una variable inserción donde se guarda la sentencia SQL que se encargara de insertar los datos en la tabla empleados.
  • Linea 30: ejecutamos la sentencia SQL almacenada en la variable inserción.
  • Linea 31: aquí estamos estamos indicando que deseamos hacer efectivo los cambios en la base de datos.
  • Linea 32: cerramos la conexión a la ase de datos.

La tabla empleados nos quedaría de la siguiente manera:

Registros cargados a la base de datos

Documentación openpyxl: openpyxl
Documentacion MySQLdb: MySQLdb
Referencias: 

  • ironsistem.com/tutoriales/python/leer-documentos-de-excel-con-python/
  • http://librosweb.es/libro/python/capitulo_12/conectarse_a_la_base_de_datos_y_ejecutar_consultas.html

No hay comentarios:

Publicar un comentario