8/3/2019 Python+ MySQL
1/12
Tarea 02, Mdulo 6:Interfaces Graficas y MySQL
Fecha de entrega:26-10-2011.
Nombre de Integrantes:Cristian Fuentes Salgado.Celso Silva Sobarzo.
8/3/2019 Python+ MySQL
2/12
2
ndice
Contenido Pgina
Introduccin.....3
Desarrollo..4 -9Conclusin..10 Anexo...11 Referencias.12
8/3/2019 Python+ MySQL
3/12
3
Introduccin
En el presente informe se evidenciar el desarrollo de un ejercicio correspondientea la actividad n2 del curso de Interfaces Graficas de Usuario de Ingeniera Civil en
Informtica de la Universidad Catlica de Temuco.
Se detallar cmo se realiz cada procedimiento de la actividad, que involucr lautilizacin del lenguaje de Python, para acciones como por ejemplo decodificar unarchivo, interactuar con la base de datos de mysql y graficar mediante la libreragrafica Pygame, y en menor medida el lenguaje de programacin C para lacreacin de archivos binarios.
8/3/2019 Python+ MySQL
4/12
4
Desarrollo
El problema descrito en la actividad consista en que se tena una base de datos
llamada Venta, la cual estaba compuesta por cuatro tablas. Las cuatros tablas son
las que se aprecian en las imgenes a continuacin.
8/3/2019 Python+ MySQL
5/12
5
La primera tabla, con la letra a clte, contiene un listado de 10 registros de
clientes con un id y el nombre y apellido de cada uno. La segunda tabla, con la
letra b stock, contiene un listado con 20 registros de productos con un id, el
nombre, su costo y margen. La tercera tabla, con la letra c fpago, contiene un
listado con 5 registros con un id y el nombre de la forma de pago. Por ultima la
cuarta tabla, con la letra d movi, no tiene registros pero est creada y con suscolumnas ya definidas.
Como se ve, la cuarta tabla no contiene registros, es en esta parte en donde
comienza la actividad.
Lo primero que se solicit es que mediante el lenguaje de programacin C/C++
generar un archivo binario estructurado (datos.bin), con 10.000 registros del tipo
de estructura de la tabla movi. Para esto se deban generar:
- Valores aleatorios entre 1 y 10 para clientes.
- Valores aleatorios entre 1 y 20 para stock.- Valores aleatorios entre 1 y 10 para cantidad.
- Valores aleatorios entre 1 y 5 para pago.
- Valores aleatorios para fecha entre el 01-01-2011 al 31-12-2011.
Para lograr esto, creamos un programa en C++. En l lo primero que se realiz
fue importar las libreras que seran
utilizadas para generar el archivo binario
(imagen.1).
Imagen.1
A continuacin creamos una estructura llamada eReg la cual nos servira para
crear el contenido que tendr el archivo binario. El contenido de esta estructura
son una serie de variables de tipo unsigned short, las cuales sern utilizadas para
generar los datos aleatorios que se solicitaron anteriormente. En el caso de las
fechas, lo que se realiz fue crear tres variables independientes una para dia, otra
8/3/2019 Python+ MySQL
6/12
6
para mes y otra para ao, las cuales luego pueden ser concatenadas creando las
fechas. La estructura descrita es la que se presenta en la imagen.2.
imagen.2
Luego se crea el programa en si, por decirlo de alguna forma. Se crea el main y lo
primero que se realiza es crear un puntero *fichero para trabajar con el archivo
que se crear. Se abre el archivo utilizando el puntero, el archivo es abierto con elnombre de datos.bin y mediante wb se le seala que ser abierto en modo de
escritura binaria. El cdigo que realiza esto es el que se muestra en la imagen.3.
imagen.3
Mediante un ciclo for, el cual se ejecutar mil veces, creamos para cada ciclo un
dato random que est dentro del rango que fue solicitado, para cada variable de laestructura creada en la imagen.2. En el caso del mes se agrega una
condicionante, por ejemplo en el cdigo mostrado del for en la imagen.4, se le
seala que si el mes es febrero los das puedan ser creados hasta el 28
solamente, por razones obvias. De esta forma los das que son con 30 das le
sealamos que los das puedan ser generados hasta 30.
imagen.4
8/3/2019 Python+ MySQL
7/12
7
Por ultimo mediante el mtodo fwrite, apreciado en la imagen.5 al pasarle la
estructura, son almacenados los registros generados por el ciclo for, en el archivo
binario.
Imagen.5
Una vez generado el archivo, mediante Python se deber conectar a la base dedatos de ventas en:
.- host = '192.168.4.59'
.- passwd = '15345345-K' (rut del alumno)
e ingresar los registros de datos.bin en la tabla de movi de MYSQL.
Por lo tanto la lectura e insercin de datos deba ser realizada mediante Python.
En Python lo primero que se debe realizar el importar las libreras que sern
utilizadas a lo largo del programa. En este caso, como se muestra en la imagen.6
se importan algunas libreras como las necesarias para trabajar con interfaz
grfica y bases de datos MySQL.
imagen.6
Posterior a la importacin de libreras se procede a crear las funciones que sern
utilizadas a lo largo del programa. En este caso se define una funcin que es la
que permite trabajar con
imgenes externas en la
interfaz grfica, como un
fondo ya diseado, el cual
mediante la funcin es
transformado al formato
necesario. se definen
algunas propiedades
como la transparencia. La
funcin sealada es la
mostrada en la imagen.7. imagen.7
8/3/2019 Python+ MySQL
8/12
8
Se debe crear la estructura con la que se trabajar. Para esto se importan algunas
funciones de C y se crea la estructura que ayudar en la lectura del archivo binario
creado en C. La estructura creada es la sealada en la imagen.8
imagen.8
Se abre el archivo datos.bin en modo de lectura binaria y utilizando la estructura
creada en la imagen.8 se lee el archivo con el ciclo for. Posterior a esto se
procede a cerrar el archivo. Ver imagen.9
imagen.9
Luego de leer el archivo nos conectamos a nuestra base de datos. Para esto se
crea una variable MiDB y mediante el mtodo m.connect() se le indica el host,
user, pass y la base de datos a la cual se conectar. Ver imagen.10
Imagen.10
Mediante un ciclo for que se ejecutar diez mil veces, se concatena la fecha (que
se cre de forma independiente el mes, da y ao), y se ejecuta una sentencia
insert para insertar todos los registros que se encontraban en el archivos datos.bin
a la tabla movi de la base de datos. El cdigo que realiza esta accin se muestra
en la imagen.11
8/3/2019 Python+ MySQL
9/12
9
Imagen.11
Con esto los datos ya se encuentran insertados en la tabla movi y a continuacion
se leen desde la misma base de datos de MySQL para graficarlos mediante
Pygame.
No se mostrar todo el cdigo por razones obvias, exceso de cdigo y porque on
acciones que se realizan siempre al trabajar con Pygame, es decir declarar
variables, resolucin de ventana, coordenadas, etc. Pero se mostrar las
principales partes del cdigo en Pygame.
Se ejecuta la sentencia select dentro de un for para leer los datos de la tabla
segn lo que se est solicitando. En este caso es el obtener el total de compras
por cliente. Luego en una variable x se almacena el resultado pero se simplifica
para poder graficarlo de mejor forma. Posteriormente se dibuja la barra en el
grafico que pertenece al resultado obtenido. Ver Imagen.12
Imagen.12
Con el resto de los grficos de barra las acciones realizadas son prcticamente las
mismas.
En el caso del grafico de lnea primero se crea un ciclo for y dentro se ejecuta la
sentencia select para almacenar obtener el datos deseado y se almacena en una
variable. Se simplifica para poder graficarlo de mejor forma (resolucin). Y
finalmente se realiza otro ciclo for para dibujar la lnea y que el grafico completo
quede como una sola lnea con las variaciones correspondientes, es decir, al
finalizar una lnea la otra debe comenzar desde ese mismo punto. Ver imagen.13.
Imagen.13
8/3/2019 Python+ MySQL
10/12
10
Conclusin
C1: Mediante el desarrollo de la tarea N 3 de Interfaces Graficas de Usuario,
descubrimos y practicamos sobre otra herramienta o mdulo de python, el cual
permite la interaccin con mysql. Este mdulo, llamado MySQLdb, nos permite
interactuar con mysql de manera intuitiva y sin necesidad de funciones conparmetros muy complicados, adems de optimizar lneas de cdigo, haciendo de
este un cdigo mucho ms elegante.
C2: Logramos darnos cuenta que un buen manejo del lenguaje simplificado de
consultas (SQL) es un plus del ingeniero informtico, porque permite hacer
consultas ms precisas.
C3: Nuevamente fuimos capaces de observar la potencia y elegancia de Python
en todos sus sentidos, debido a que con un cdigo corto, sencillo y bonito se logr
cumplir el objetivo a cabalidad, usando el modulo grafico pygame.
8/3/2019 Python+ MySQL
11/12
11
Anexo
Anexo de variables ms significativas dentro de nuestro cdigo.
estructura() Estructura utilizada para leer los datos del archivo binario
anteriormente creado mediante c/c++ con 10.000 registrospertenecientes a compras de clientes.
eReg Arreglo de tipo "estructura", de capacidad 10000 que almacenara losdatos ledos desde el archivo binario.
MiDB Objeto que maneja nuestra conexin a la base de datos.
miC Objeto que se encarga de manejar las consultas y cambios querealicemos a la base de datos, es creado mediante la funcin cursor
sobre el objeto de la base de datos( miC=MiDB.cursor()).
nRGB,nRGB2,nRGB3
Variables que manejan el color utilizado posteriormente en los
grficos.
sc Objeto que maneja nuestro frame(cuadro o ventana) de pygame,sobre el dibujaremos y montaremos imgenes.
Salida de Pantalla de la Interfaz desarrollada.
8/3/2019 Python+ MySQL
12/12
12
Referencias
1.-http://www.losersjuegos.com.ar/traducciones/pygame/draw
2.-http://www.python.org
3.-http://www.pygame.org
http://www.losersjuegos.com.ar/traducciones/pygame/drawhttp://www.losersjuegos.com.ar/traducciones/pygame/drawhttp://www.losersjuegos.com.ar/traducciones/pygame/drawhttp://www.python.org/http://www.python.org/http://www.python.org/http://www.pygame.org/http://www.pygame.org/http://www.pygame.org/http://www.pygame.org/http://www.python.org/http://www.losersjuegos.com.ar/traducciones/pygame/drawTop Related