My SQL
My SQL
My SQL
Tkinter
1
Base de datos de un sistema de gestión de inventario de una tienda de artículos
electrónicos
Explicación:
En la primera columna se define el “ID” como un dato de tipo int. Este elemento es
un entero auto-incrementable.
Se elaboró una tabla llamada productos que podrá registrar los siguientes datos: el
código, nombre, modelo, precio y la cantidad de los productos.
Precio: En este recuadro permite introducir el valor de venta del producto. Registra
datos de tipo CHAR, tiene una longitud máxima de 50 elementos.
2
Este programa permite realizar 4 funciones, aparte del método constructor:
init: Es el metodo constructor del programa. A traves de este metodo se inicia la conexión
con el MySQL.
3
busca_producto: A través del nombre del producto, se localiza un producto en particular
mientras este registrado dentro del sistema. Este método retorna el nombre del producto.
Para la interfaz:
Para la interfaz se creó un archivo llamado main. Aquí se importan desde tkinder las
librerías, entry, label frame, tk, button, ttk, scrollbar, VERTICAL, HORIZONTAL,
StringVar, END. Y desde conexión se importa *. Este archivo tiene como clase Registro,
donde se guardaron los elementos y se puede visualizar la interfaz.
Métodos de la interfaz:
4
Fuente: captura de pantalla del código del programa
create_wiegts: En este metodo, se define todos los elementos de la interfaz desde las
pestañas (frame), las ventanas de texto hasta los botones.
5
Fuente: captura de pantalla del código del programa
mostrar_todo: permite mostrar todos los productos que estan almacenados en la base de
datos.
6
Fuente: captura de pantalla del código del programa
eliminar_fila: permite elimar una fila de la tabla donde se almacenan los datos.
obtener_fila: permite obtener una fila de la tabla donde estan almacenados los datos.
7
Fuente: captura de pantalla del código del programa
Botones:
● “Limpiar”.
● “Buscar por nombre” en la tabla que está conectada con la base datos.
● “Mostrar datos de MySQL”. Permite ver todos los datos de la tabla en MySQL.
8
Fuente: captura de pantalla de la ejecución del programa
● El ultimo frame es básicamente del control sirve para registrar los datos,
limpiar ,eliminar todos los datos así como también permite buscar ingresando el
nombre y al final con el botón “Mostrar MySQL” permite poder mostrar todos los
datos que tenga la tabla que tengamos en la base de datos.
9
Fuente: captura de pantalla de la ejecución del programa
USE `base_datos`;
10
Datos para la tabla base_datos.productos:
11
(182, 'ER43', 'PILAS', 'AAA', '2.00', '544'),
Estructura del archivo para conectar la base de datos con el programa o interfaz
gráfica donde también se encuentran los métodos o funciones para la manipulación de los
datos suministrados con el usuario, quien a través de una GUI es capaz de interactuar con la
base de datos y realizar ciertas consultas a los datos contenidos en ella, el archivo se llama:
conexion.py
class Registro_datos():
def __init__(self):
database ='base_datos',
user = 'root',
password ='admin')
cur = self.conexion.cursor()
cur.execute(sql)
self.conexion.commit()
12
cur.close()
def mostrar_productos(self):
cursor = self.conexion.cursor()
cursor.execute(sql)
registro = cursor.fetchall()
return registro
cur = self.conexion.cursor()
cur.execute(sql)
nombreX = cur.fetchall()
cur.close()
return nombreX
def elimina_productos(self,nombre):
cur = self.conexion.cursor()
cur.execute(sql)
self.conexion.commit()
cur.close()
13
Estructura del archivo de la clase principal donde se encuentra la estructura visible
del programa o interfaz gráfica y la definición de los métodos para la interacción con el
usuario llamado: main.py
from tkinter import Entry, Label, Frame, Tk, Button,ttk, Scrollbar, VERTICAL,
HORIZONTAL,StringVar,END
from conexion import*
class Registro(Frame):
def __init__(self, master, *args, **kwargs):
super().__init__(master, *args, **kwargs)
self.frame1 = Frame(master)
self.frame1.grid(columnspan=2, column=0,row=0)
self.frame2 = Frame(master, bg='navy')
self.frame2.grid(column=0, row=1)
self.frame3 = Frame(master)
self.frame3.grid(rowspan=2, column=1, row=1)
self.codigo = StringVar()
self.nombre = StringVar()
self.modelo = StringVar()
self.precio = StringVar()
self.cantidad = StringVar()
self.buscar = StringVar()
14
self.base_datos = Registro_datos()
self.create_wietgs()
def create_wietgs(self):
Label(self.frame1, text = 'R E G I S T R O \t D E \t D A T O S',bg='gray22',fg='white',
font=('Orbitron',15,'bold')).grid(column=0, row=0)
Entry(self.frame2,textvariable=self.codigo , font=('Arial',12)).grid(column=1,row=1,
padx =5)
Entry(self.frame2,textvariable=self.nombre , font=('Arial',12)).grid(column=1,row=2)
Entry(self.frame2,textvariable=self.modelo , font=('Arial',12)).grid(column=1,row=3)
Entry(self.frame2,textvariable=self.precio , font=('Arial',12)).grid(column=1,row=4)
Entry(self.frame2,textvariable=self.cantidad , font=('Arial',12)).grid(column=1,row=5)
15
Button(self.frame4,command = self.limpiar_datos, text='LIMPIAR',
font=('Arial',10,'bold'), bg='orange red').grid(column=1,row=1, padx=10)
Button(self.frame4,command = self.eliminar_fila, text='ELIMINAR',
font=('Arial',10,'bold'), bg='yellow').grid(column=2,row=1, padx=4)
Button(self.frame4,command = self.buscar_nombre, text='BUSCAR POR NOMBRE',
font=('Arial',8,'bold'), bg='orange').grid(columnspan=2,column = 1, row=2)
Entry(self.frame4,textvariable=self.buscar , font=('Arial',12),
width=10).grid(column=0,row=2, pady=1, padx=8)
Button(self.frame4,command = self.mostrar_todo, text='MOSTRAR DATOS DE
MYSQL', font=('Arial',10,'bold'), bg='green2').grid(columnspan=3,column=0,row=3,
pady=8)
16
self.tabla.heading('Modelo', text='Modelo', anchor ='center')
self.tabla.heading('Precio', text='Precio', anchor ='center')
self.tabla.heading('Cantidad', text='Cantidad', anchor ='center')
estilo = ttk.Style(self.frame3)
estilo.theme_use('alt') # ('clam', 'alt', 'default', 'classic')
estilo.configure(".",font= ('Helvetica', 12, 'bold'), foreground='red2')
estilo.configure("Treeview", font= ('Helvetica', 10, 'bold'), foreground='black',
background='white')
estilo.map('Treeview',background=[('selected','green2')],foreground=[('selected',
'black')] )
def agregar_datos(self):
self.tabla.get_children()
codigo = self.codigo.get()
nombre = self.nombre.get()
modelo = self.modelo.get()
precio = self.precio.get()
cantidad = self.cantidad.get()
datos = (nombre, modelo, precio, cantidad)
if codigo and nombre and modelo and precio and cantidad !='':
self.tabla.insert('',0, text = codigo, values=datos)
self.base_datos.inserta_producto(codigo, nombre, modelo, precio, cantidad)
def limpiar_datos(self):
self.tabla.delete(*self.tabla.get_children())
self.codigo.set('')
self.nombre.set('')
self.modelo.set('')
self.precio.set('')
17
self.cantidad.set('')
def buscar_nombre(self):
nombre_producto = self.buscar.get()
nombre_producto = str("'" + nombre_producto + "'")
nombre_buscado = self.base_datos.busca_producto(nombre_producto)
self.tabla.delete(*self.tabla.get_children())
i = -1
for dato in nombre_buscado:
i= i+1
self.tabla.insert('',i, text = nombre_buscado[i][1:2], values=nombre_buscado[i][2:6])
def mostrar_todo(self):
self.tabla.delete(*self.tabla.get_children())
registro = self.base_datos.mostrar_productos()
i = -1
for dato in registro:
i= i+1
self.tabla.insert('',i, text = registro[i][1:2], values=registro[i][2:6])
def eliminar_fila(self):
fila = self.tabla.selection()
if len(fila) !=0:
self.tabla.delete(fila)
nombre = ("'"+ str(self.nombre_borar) + "'")
self.base_datos.elimina_productos(nombre)
18
self.nombre_borar = data['values'][0]
def main():
ventana = Tk()
ventana.wm_title("Registro de Datos en MySQL")
ventana.config(bg='gray22')
ventana.geometry('900x500')
ventana.resizable(0,0)
app = Registro(ventana)
app.mainloop()
if __name__=="__main__":
main()
19
Conclusión.
Las bases de datos son consideradas como una de las aportaciones más grandes que
ha realizado el mundo de la informática a las empresas. Toda organización actualmente,
con independencia de su tamaño, debe tener una base de datos, pero no solo es contar con
ella, sino también saber captar, gestionar, así como almacenar la información de la mejor
manera posible.
Las bases de datos juegan un papel fundamental en la mayoría de las áreas donde se
utilizan computadores, permitiendo almacenar grandes volúmenes de datos acerca de la
empresa, los cuales son percibidos a través de los usuarios, de la misma manera la
información obtenida de los datos almacenados debe estar en una forma que útil para
administrar, planear, controlar y tomar decisiones dentro de una organización.
20
Anexos
21