10

Buscar un documento con Python en mongoDB (Curso de MongoDB y Python [10] )

En este tutorial vamos a buscar un documento con Python en mongoDB siguiendo estos pasos:

  • Crear 3 entry con nombre,sexo,clificacion.
  • Crear el botón buscar y al hace click llamar la función buscarRegistro la cual hará lo siguiente.
  • Dependiendo de los entry con texto buscar por nombre,sexo y calificación.
Buscar un documento con Python en mongoDB

Codigos: https://github.com/programadornovato/curso-python-mongodb/commit/9d7e87c97abe698e295118fc4840b6c38f869e60

from tkinter import*
from tkinter import ttk
from tkinter import messagebox
import pymongo
from bson.objectid import ObjectId

MONGO_HOST="localhost"
MONGO_PUERTO="27017"
MONGO_TIEMPO_FUERA=1000

MONGO_URI="mongodb://"+MONGO_HOST+":"+MONGO_PUERTO+"/"

MONGO_BASEDATOS="escuela"
MONGO_COLECCION="alumnos"
cliente=pymongo.MongoClient(MONGO_URI,serverSelectionTimeoutMS=MONGO_TIEMPO_FUERA)
baseDatos=cliente[MONGO_BASEDATOS]
coleccion=baseDatos[MONGO_COLECCION]
ID_ALUMNO=""
def mostrarDatos(nombre="",sexo="",calificacion=""):
    objetoBuscar={}
    if len(nombre)!=0:
        objetoBuscar["nombre"]=nombre
    if len(sexo)!=0:
        objetoBuscar["sexo"]=sexo
    if len(calificacion)!=0:
        objetoBuscar["calificacion"]=calificacion
    try:
        registros=tabla.get_children()
        for registro in registros:
            tabla.delete(registro)
        for documento in coleccion.find(objetoBuscar):
            tabla.insert('',0,text=documento["_id"],values=documento["nombre"])
        cliente.close()
    except pymongo.errors.ServerSelectionTimeoutError as errorTiempo:
        print("Tiempo exedido "+errorTiempo)
    except pymongo.errors.ConnectionFailure as errorConexion:
        print("Fallo al conectarse a mongodb "+errorConexion)
def crearRegistro():
    if len(nombre.get())!=0 and len(calificacion.get())!=0 and len(sexo.get())!=0 :
        try:
            documento={"nombre":nombre.get(),"calificacion":calificacion.get(),"sexo":sexo.get()}
            coleccion.insert(documento)
            nombre.delete(0,END)
            sexo.delete(0,END)
            calificacion.delete(0,END)
        except pymongo.errors.ConnectionFailure as error:
            print(error)
    else:
        messagebox.showerror(message="Los campos no pueden estar vacios")
    mostrarDatos()
def dobleClickTabla(event):
    global ID_ALUMNO
    ID_ALUMNO=str(tabla.item(tabla.selection())["text"])
    #print(ID_ALUMNO)
    documento=coleccion.find({"_id":ObjectId(ID_ALUMNO)})[0]
    #print(documento)
    nombre.delete(0,END)
    nombre.insert(0,documento["nombre"])
    sexo.delete(0,END)
    sexo.insert(0,documento["sexo"])
    calificacion.delete(0,END)
    calificacion.insert(0,documento["calificacion"])
    crear["state"]="disabled"
    editar["state"]="normal"
    borrar["state"]="normal"
def editarRegistro():
    global ID_ALUMNO
    if len(nombre.get())!=0 and len(sexo.get())!=0 and len(calificacion.get())!=0 :
        try:
            idBuscar={"_id":ObjectId(ID_ALUMNO)}
            nuevosValores={"nombre":nombre.get(),"sexo":sexo.get(),"calificacion":calificacion.get()}
            coleccion.update(idBuscar,nuevosValores)
            nombre.delete(0,END)
            sexo.delete(0,END)
            calificacion.delete(0,END)
        except pymongo.errors.ConnectionFailure as error:
            print(error)
    else:
        messagebox.showerror("Los campos no pueden estar vacios")
    mostrarDatos()
    crear["state"]="normal"
    editar["state"]="disabled"
    borrar["state"]="disabled"
def borrarRegistro():
    global ID_ALUMNO
    try:
        idBuscar={"_id":ObjectId(ID_ALUMNO)}
        coleccion.delete_one(idBuscar)
        nombre.delete(0,END)
        sexo.delete(0,END)
        calificacion.delete(0,END)
    except pymongo.errors.ConnectionFailure as error:
        print(error)
    crear["state"]="normal"
    editar["state"]="disabled"
    borrar["state"]="disabled"
    mostrarDatos()
def buscarRegistro():
    mostrarDatos(buscarNombre.get(),buscarSexo.get(),buscarCalificacion.get())
ventana=Tk()
tabla=ttk.Treeview(ventana,columns=2)
tabla.grid(row=1,column=0,columnspan=2)
tabla.heading("#0",text="ID")
tabla.heading("#1",text="NOMBRE")
tabla.bind("<Double-Button-1>",dobleClickTabla)
#Nombre
Label(ventana,text="Nombre").grid(row=2,column=0,sticky=W+E)
nombre=Entry(ventana)
nombre.grid(row=2,column=1,sticky=W+E)
nombre.focus()
#Sexo
Label(ventana,text="Sexo").grid(row=3,column=0,sticky=W+E)
sexo=Entry(ventana)
sexo.grid(row=3,column=1,sticky=W+E)
#Calificacion
Label(ventana,text="Calificacion").grid(row=4,column=0,sticky=W+E)
calificacion=Entry(ventana)
calificacion.grid(row=4,column=1,sticky=W+E)
#Boton crear
crear=Button(ventana,text="Crear alumno",command=crearRegistro,bg="green",fg="white")
crear.grid(row=5,columnspan=2,sticky=W+E)
#Boton editar
editar=Button(ventana,text="Editar alumno",command=editarRegistro,bg="yellow")
editar.grid(row=6,columnspan=2,sticky=W+E)
editar["state"]="disabled"
#Boton borrar
borrar=Button(ventana,text="Borrar alumno",command=borrarRegistro,bg="red",fg="white")
borrar.grid(row=7,columnspan=2,sticky=W+E)
borrar["state"]="disabled"
#buscar Nombre
Label(ventana,text="Buscar por nombre").grid(row=8,column=0,sticky=W+E)
buscarNombre=Entry(ventana)
buscarNombre.grid(row=8,column=1,sticky=W+E)
#Sexo
Label(ventana,text="Buscar por Sexo").grid(row=9,column=0,sticky=W+E)
buscarSexo=Entry(ventana)
buscarSexo.grid(row=9,column=1,sticky=W+E)
#Calificacion
Label(ventana,text="Buscar por calificacion").grid(row=10,column=0,sticky=W+E)
buscarCalificacion=Entry(ventana)
buscarCalificacion.grid(row=10,column=1,sticky=W+E)
buscar=Button(ventana,text="Buscar alumno",command=buscarRegistro,bg="blue",fg="white")
buscar.grid(row=11,columnspan=2,sticky=W+E)

mostrarDatos()
ventana.mainloop()

🎦[CURSO] PYTHON Y MONGODB (CREAR UN CRUD): https://www.youtube.com/playlist?list=PLCTD_CpMeEKR5cVnmTyFqUuzBOmEAjG4z

Curso de python de 0 a 100 (Opcional). https://www.youtube.com/playlist?list=PLCTD_CpMeEKRppvi86Dy8CPYZ8-XzN2qu
[CURSO] MONGODB DE 0 A 100: https://www.youtube.com/playlist?list=PLCTD_CpMeEKQ9_WJOtexctR6Iqw7whMXY
[CURSO] PYTHON Y TKINTER [CREAR INTERFAS GRAFICA]🐍: https://www.youtube.com/playlist?list=PLCTD_CpMeEKQBfbGkWHmc2TlMdOlWjla7

🔗 Facebook: https://facebook.com/ProgramadorNovatoOficial
🔗 Twitter: https://twitter.com/programadornova
🔗 Linkedin: https://www.linkedin.com/in/programadornovato/
🔗 Instagram: https://www.instagram.com/programadornovato/
🔗 Pagina oficial: https://www.programadornovato.com
🔗 Gracias por apoyar este canal: https://www.patreon.com/programadornovato

<<Anterior tutorial Siguiente tutorial >>

Ads Blocker Image Powered by Code Help Pro

Ads Blocker Detected!!!

En Programador Novato vivimos de los anuncios, hemos detectado que está utilizando extensiones para bloquear anuncios. Ayudanos deshabilitando tu bloqueador de anuncios. :)