Este es el código de una aplicación muy básica creada en python, que crea, lee, actualiza y borra registros empleando una base de datos sqlite.
Intro
En programación el término CRUD, hace referencia a Create, Read, Update, Delete generalmente en una base de datos. Tengo idea mas adelante, de explicar y documentar un poco mas este código.
La libreria tkinter que importamos, dotará a nuestra aplicación de entorno gráfico.
El Código:
from tkinter import * from tkinter import messagebox import sqlite3 root=Tk() root.title("Aplicación con B.D") root.geometry("350x300") miId=StringVar() miNombre=StringVar() miApellido=StringVar() miPass=StringVar() miDireccion=StringVar() def conexionBBDD(): miConexion=sqlite3.connect("UsuariosDB") miCursor=miConexion.cursor() try: miCursor.execute(''' CREATE TABLE DATOSUSUARIOS ( ID INTEGER PRIMARY KEY AUTOINCREMENT, NOMBRE_USUARIO VARCHAR(50), PASSWORD VARCHAR(50), APELLIDO VARCHAR(20), DIRECCION VARCHAR(50)) ''') #COMENTARIOS VARCHAR(100)) messagebox.showinfo("BBDD","BBDD creada con éxito") except: messagebox.showwarning("¡Atención!","La BBDD ya existe") def salirAplicacion(): valor=messagebox.askquestion("Salir","¿Deseas salir de la aplicación?") if valor=="yes": root.destroy() def limpiarCampos(): miId.set("") miNombre.set("") miApellido.set("") miDireccion.set("") miPass.set("") #textoComentario.delete(1,0,END) def mensaje(): print("pulsaste!") def crear(): miConexion=sqlite3.connect("UsuariosDB") miCursor=miConexion.cursor() datos=miNombre.get(),miPass.get(),miApellido.get(),miDireccion.get() miCursor.execute("INSERT INTO DATOSUSUARIOS VALUES(NULL,?,?,?,?)", (datos)) miConexion.commit() messagebox.showinfo("BBDD","Registro insertado con éxito") """ El siguiente codigo favorece sql injection, y es inseguro. Aunque funciona def crear(): miConexion=sqlite3.connect("UsuariosDB") miCursor=miConexion.cursor() miCursor.execute("INSERT INTO DATOSUSUARIOS VALUES(NULL,'"+miNombre.get()+ "','" + miPass.get() + "','" + miApellido.get()+ "','" + miDireccion.get() + "')") miConexion.commit() messagebox.showinfo("BBDD","Registro insertado con éxito") """ def leer(): miConexion=sqlite3.connect("UsuariosDB") miCursor=miConexion.cursor() miCursor.execute("SELECT * FROM DATOSUSUARIOS WHERE ID=" +miId.get()) elUsuario=miCursor.fetchall() for usuario in elUsuario: miId.set(usuario[0]) miNombre.set(usuario[1]) miApellido.set(usuario[3]) miDireccion.set(usuario[4]) miConexion.commit() def actualizar(): miConexion=sqlite3.connect("UsuariosDB") miCursor=miConexion.cursor() datos=miNombre.get(),miPass.get(),miApellido.get(),miDireccion.get() miCursor.execute("UPDATE DATOSUSUARIOS SET NOMBRE_USUARIO=?, PASSWORD=?, APELLIDO=?, DIRECCION=? "+ "WHERE ID=" + miId.get(),(datos)) """" Siguiente codigo susceptible de SQL Inyection miCursor.execute("UPDATE DATOSUSUARIOS SET NOMBRE_USUARIO='"+miNombre.get()+ "', PASSWORD='" + miPass.get() + "', APELLIDO='" + miApellido.get() + "', DIRECCION='" + miDireccion.get() + "' WHERE ID=" + miId.get()) """ miConexion.commit() messagebox.showinfo("BBDD","Registro actualizado con éxito") def borrar(): miConexion=sqlite3.connect("UsuariosDB") miCursor=miConexion.cursor() miCursor.execute("DELETE FROM DATOSUSUARIOS WHERE ID=" +miId.get()) miConexion.commit() messagebox.showinfo("BBDD","Registro borrado con éxito") menubar=Menu(root) menubasedat=Menu(menubar, tearoff=0) menubasedat.add_command(label="Conectar", command=conexionBBDD) menubasedat.add_command(label="Salir", command=salirAplicacion) menubar.add_cascade(label="BBDD", menu=menubasedat) menuborrar=Menu(menubar, tearoff=0) menuborrar.add_command(label="Borrar campos", command=limpiarCampos) menubar.add_cascade(label="Borrar",menu=menuborrar ) crud=Menu(menubar, tearoff=0) crud.add_command(label="Añadir", command=crear) crud.add_command(label="Leer", command=leer) crud.add_command(label="Actualizar", command=actualizar) crud.add_command(label="Borrar", command=borrar) menubar.add_cascade(label="CRUD", menu=crud) ayudamenu=Menu(menubar, tearoff=0) ayudamenu.add_command(label="Licencia", command=mensaje) ayudamenu.add_command(label="Acerca", command=mensaje) menubar.add_cascade(label="Ayuda", menu=ayudamenu) root.config(menu=menubar) l1=Label(root, text="Id: ") l1.grid(column=0, row=1) e1=Entry(root, textvariable=miId) e1.grid(column=1, row=1) l2=Label(root, text="Nombre: ") l2.grid(column=0, row=2) e2=Entry(root, textvariable=miNombre) e2.grid(column=1, row=2) l3=Label(root, text="Password: ") l3.grid(column=0, row=3) e3=Entry(root,textvariable=miPass) e3.grid(column=1, row=3) # textvariable="password", show="*" l4=Label(root, text="Apellido: ") l4.grid(column=0, row=4) e4=Entry(root,textvariable=miApellido) e4.grid(column=1, row=4) l5=Label(root, text="Dirección: ") l5.grid(column=0, row=5) e5=Entry(root,textvariable=miDireccion) e5.grid(column=1, row=5) #l6=Label(root, text="Comentario: ", textvariable=textoComentario) #l6.grid(column=0, row=6) #l6=Text(root, width=20, height=6) #l6.place(x=75,y=110) b1=Button(root, text="Create", command=crear) b1.place(x=40,y=250) b2=Button(root, text="Read", command=leer) b2.place(x=90,y=250) b3=Button(root, text="Update", command=actualizar) b3.place(x=130,y=250) b4=Button(root, text="Delete", command=borrar) b4.place(x=180,y=250) root.mainloop()
Be the first to comment