python+ mysql

Upload: cristian-fuentes-salgado

Post on 06-Apr-2018

251 views

Category:

Documents


2 download

TRANSCRIPT

  • 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/draw