My SQL

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 21

Introducción

MySQL es el sistema de gestión de bases de datos relacional más extendido en la


actualidad al estar basada en código abierto, no tiene coste, con el ahorro que eso conlleva,
y de los más utilizados para los sistemas de gestión de contenidos WordPress, Joomla o
Drupal. Es una base de datos gratuita. Es muy fácil de usar, es muy rápida y su rendimiento
es estupendo sin añadirle ninguna funcionalidad avanzada. Utiliza varias capas de
seguridad. Contraseñas encriptadas, derechos de acceso y privilegios para los usuarios,
además de que es compatible con Linux y Windows, tiene pocos requerimientos
y eficiencia de memoria, sumado a que emplea pocos recursos de CPU o RAM.

A continuación se explican los elementos para realizar un sistema de inventario


cuya base de datos está basada en MySQL. Además de ilustrar parte del código utilizado en
el programa, así como de la interfaz, para facilitar la comprensión. Para comenzar se
describen datos importantes generales de la realización del proyecto trabajo final:

● La interfaz gráfica se hizo en el lenguaje de programación Python con la librería

Tkinter

● El sistema de gestión de Base de datos utilizado fue “MySQL”, la cual permite

realizar registro de datos, buscar datos y eliminarlos.

● Editor de código utilizado: Sublime text.

1
Base de datos de un sistema de gestión de inventario de una tienda de artículos
electrónicos

Explicación:

Para el desarrollo de este programa se importó la librería mysql.conector. Este


programa cuenta con un archivo llamado conexión donde se almacena una clase llamada
Registro_datos, esta clase permite crear el código de los métodos para que funcione la
interfaz.

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.

En el código: Almacena el código en el inventario del elemento. Registra datos de


tipo CHAR, tiene una longitud máxima de 10 elementos.

En el nombre: En esta casilla se almacena el nombre del producto. Registra datos


de tipo CHAR, tiene una longitud máxima de 20 elementos.

Modelo: Le permite al usuario identificar el tipo de elemento del producto. Registra


datos de tipo CHAR, tiene una longitud máxima de 20 elementos.

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.

Cantidad: En esta casilla se especificará la cantidad de elementos del producto con


los que posee la tienda. Es un valor añadido por el usuario. Registra datos de tipo CHAR,
tiene una longitud máxima de 50 elementos.

Métodos del programa:

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.

Fuente: captura de pantalla del código del programa

inserta_producto: Esta función permite añadir un nuevo producto en la base de datos. El


nuevo producto cuenta con las características especificadas en la tabla.

Fuente: captura de pantalla del código del programa

Mostrar_productos: Se encarga de enseñar al usuario mostrar todos los valores


almacenados de los productos, esto incluye las características especificadas en la tabla. Este
método retorna los productos guardados.

Fuente: captura de pantalla del código del programa

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.

Fuente: captura de pantalla del código del programa

elimina_productos: Este método elimina un producto en particular, al recibir el nombre.

Fuente: captura de pantalla del código del programa

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:

init: Es el metodo constructor de la interfaz A traves de este metodo se inicia la conexión


con el MySQL. Dentro de este metodo se crean las variables y los frame ademas de que se
crea un objeto de la clase Registro_datos ubicada dentro del archivo conexion para acceder
a los metodos.

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.

Fuente: captura de pantalla del código del programa

agregar_datos: permite ingresar un nuevo producto a la base de datos.

5
Fuente: captura de pantalla del código del programa

limpiar_datos: permite eliminar todos los datos almacenados en la base de datos.

Fuente: captura de pantalla del código del programa

mostrar_todo: permite mostrar todos los productos que estan almacenados en la base de
datos.

Fuente: captura de pantalla del código del programa

buscar_nombre: permite obtener el nombre del producto.

6
Fuente: captura de pantalla del código del programa

eliminar_fila: permite elimar una fila de la tabla donde se almacenan los datos.

Fuente: captura de pantalla del código del programa

obtener_fila: permite obtener una fila de la tabla donde estan almacenados los datos.

Fuente: captura de pantalla del código del programa

main: es el metodo para visualizar la ventana de la interfaz.

7
Fuente: captura de pantalla del código del programa

Botones:

● “Registrar” va a permitir agregar productos.p

● “Limpiar”.

● “Eliminar” de las filas y por lo tanto de la base de datos.

● “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.

Se han creado 4 frame:

● El primer Frame es el principal en donde se encuentra el título “registros de datos”.

Fuente: captura de pantalla de la ejecución del programa

● En el segundo frame se agregan los nuevos datos.

8
Fuente: captura de pantalla de la ejecución del programa

● En el tercer frame está para mostrar la tabla.

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

Codigo fuente de la base de datos:

Estructura de la base de datos donde se almacenan una serie de datos suministrados


por el usuario a través de la interfaz del programa cuyo archivo se llama: base_datos.sql

CREATE DATABASE IF NOT EXISTS `base_datos` /*!40100 DEFAULT


CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT
ENCRYPTION='N' */;

USE `base_datos`;

Estructura para tabla base_datos.productos:

CREATE TABLE IF NOT EXISTS `productos` (

`ID` int NOT NULL AUTO_INCREMENT,

`CODIGO` char(10) NOT NULL DEFAULT '0',

`NOMBRE` char(20) NOT NULL DEFAULT '0',

`MODELO` char(20) NOT NULL DEFAULT '0',

`PRECIO` char(50) NOT NULL DEFAULT '0',

`CANTIDAD` char(50) NOT NULL DEFAULT '0',

PRIMARY KEY (`ID`)

) ENGINE=InnoDB AUTO_INCREMENT=188 DEFAULT CHARSET=utf8mb4


COLLATE=utf8mb4_0900_ai_ci;

10
Datos para la tabla base_datos.productos:

DELETE FROM `productos`;

/*!40000 ALTER TABLE `productos` DISABLE KEYS */;

INSERT INTO `productos` (`ID`, `CODIGO`, `NOMBRE`, `MODELO`, `PRECIO`,


`CANTIDAD`) VALUES

(39, 'RES001', 'RESISTENCIA', 'RV', '2.00', '222'),

(40, 'TRAS-11', 'TRANSISTOR', 'PNP', '1.00', '554'),

(44, '10101', 'CONDENSADOR', 'CERAMICO', '2.00', '100'),

(168, 'DB121', 'DIODO', 'ZENER', '1.50', '231'),

(169, 'IC002', 'IC', 'AND', '1.00', '200'),

(170, 'IC003', 'IC', 'XOR', '1.00', '300'),

(171, 'D0092', 'DIOD0', 'ZENER', '2.00', '232'),

(172, 'RE21', 'RELE', '221R', '2.50', '423'),

(173, '2560', 'ARDUINO', 'MEGA', '30.0', '37'),

(174, '2021DS', 'ARDUINO', 'UNO R3', '15.50', '73'),

(175, 'RES2021', 'RESISTENCIA', '4B', '0.10', '1000'),

(176, 'LED122', 'LED', 'GREENR3', '0.50', '144'),

(177, 'LDR43', 'LDR', 'LDRG', '2.00', '43'),

(178, 'FUSI232', 'FUSIBLE', '23FDEW', '2.00', '331'),

(179, 'MATRIZ32', 'MATRIZ', '32X8', '50.0', '56'),

(180, 'SENSORRE', 'ULTRASONIC', 'RGR0544', '5.00', '231'),

(181, '555N', 'TIMER', '555', '1.50', '621'),

11
(182, 'ER43', 'PILAS', 'AAA', '2.00', '544'),

(185, '1212', '12121', '12121', '22121', '12121');

/*!40000 ALTER TABLE `productos` ENABLE KEYS */;

Código fuente del programa:

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

import mysql.connector #pip install mysql-connector-python

class Registro_datos():

def __init__(self):

self.conexion = mysql.connector.connect( host='localhost',

database ='base_datos',

user = 'root',

password ='admin')

def inserta_producto(self,codigo, nombre, modelo, precio, cantidad):

cur = self.conexion.cursor()

sql='''INSERT INTO productos (CODIGO, NOMBRE, MODELO, PRECIO,


CANTIDAD)

VALUES('{}', '{}','{}', '{}','{}')'''.format(codigo, nombre, modelo, precio, cantidad)

cur.execute(sql)

self.conexion.commit()

12
cur.close()

def mostrar_productos(self):

cursor = self.conexion.cursor()

sql = "SELECT * FROM productos "

cursor.execute(sql)

registro = cursor.fetchall()

return registro

def busca_producto(self, nombre_producto):

cur = self.conexion.cursor()

sql = "SELECT * FROM productos WHERE NOMBRE =


{}".format(nombre_producto)

cur.execute(sql)

nombreX = cur.fetchall()

cur.close()

return nombreX

def elimina_productos(self,nombre):

cur = self.conexion.cursor()

sql='''DELETE FROM productos WHERE NOMBRE = {}'''.format(nombre)

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.frame4 = Frame(master, bg='black')


self.frame4.grid(column=0, row=2)

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)

Label(self.frame2, text = 'Agregar Nuevos Datos',fg='white', bg ='navy',


font=('Rockwell',12,'bold')).grid(columnspan=2, column=0,row=0, pady=5)
Label(self.frame2, text = 'Codigo',fg='white', bg ='navy',
font=('Rockwell',13,'bold')).grid(column=0,row=1, pady=15)
Label(self.frame2, text = 'Nombre',fg='white', bg ='navy',
font=('Rockwell',13,'bold')).grid(column=0,row=2, pady=15)
Label(self.frame2, text = 'Modelo',fg='white', bg ='navy',
font=('Rockwell',13,'bold')).grid(column=0,row=3, pady=15)
Label(self.frame2, text = 'Precio', fg='white',bg ='navy',
font=('Rockwell',13,'bold')).grid(column=0,row=4, pady=15)
Label(self.frame2, text = 'Cantidad',fg='white', bg ='navy',
font=('Rockwell',13,'bold')).grid(column=0,row=5, pady=15)

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)

Label(self.frame4, text = 'Control',fg='white', bg ='black',


font=('Rockwell',12,'bold')).grid(columnspan=3, column=0,row=0, pady=1, padx=4)
Button(self.frame4,command= self.agregar_datos, text='REGISTRAR',
font=('Arial',10,'bold'), bg='magenta2').grid(column=0,row=1, pady=10, padx=4)

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)

self.tabla = ttk.Treeview(self.frame3, height=21)


self.tabla.grid(column=0, row=0)

ladox = Scrollbar(self.frame3, orient = HORIZONTAL, command= self.tabla.xview)


ladox.grid(column=0, row = 1, sticky='ew')
ladoy = Scrollbar(self.frame3, orient =VERTICAL, command = self.tabla.yview)
ladoy.grid(column = 1, row = 0, sticky='ns')

self.tabla.configure(xscrollcommand = ladox.set, yscrollcommand = ladoy.set)


self.tabla['columns'] = ('Nombre', 'Modelo', 'Precio', 'Cantidad')

self.tabla.column('#0', minwidth=100, width=120, anchor='center')


self.tabla.column('Nombre', minwidth=100, width=130 , anchor='center')
self.tabla.column('Modelo', minwidth=100, width=120, anchor='center' )
self.tabla.column('Precio', minwidth=100, width=120 , anchor='center')
self.tabla.column('Cantidad', minwidth=100, width=105, anchor='center')

self.tabla.heading('#0', text='Codigo', anchor ='center')


self.tabla.heading('Nombre', text='Nombre', anchor ='center')

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')] )

self.tabla.bind("<<TreeviewSelect>>", self.obtener_fila) # seleccionar fila

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)

def obtener_fila(self, event):


current_item = self.tabla.focus()
if not current_item:
return
data = self.tabla.item(current_item)

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.

Cuando una base de datos se gestiona de forma adecuada, la organización obtiene


una serie de ventajas, aumentando la eficacia o realizando unos trabajos de manera más
rápida y ágil, pues se simplifica la labor , sin mencionar de la mejora en la seguridad de
todos los datos que se almacenan ya que esta es una opción para resguardar los datos de
forma persistente. Unos factores que permiten maximizar el tiempo y donde la
productividad mejora de forma evidente.

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

Imagen 1: Vista inicial.

Imagen 2: Registrar productos.

21

También podría gustarte