05-09-2019, 07:40 AM
Buenas:
Como dice el título estoy teniendo problemas a la hora de crear una pequeña aplicación de login basada en base de datos.
En principio todo funciona correctamente siempre y cuando indiques la contraseña correcta, pero si te equivocas y tratas de rectificar el resultado es que siempre aparece el mensaje de contraseña no válida como si fuera un bucle a pesar de que la contraseña que estás introduciendo de nuevo corrigiendo la anterior sí es correcta. (No sé si me explico bien). ¿Puede que necesite hacer una "reconexión a la base de datos en la sentecia elif?.
Como una imagen vale mil palabras os pongo el código que estoy usando. Esta es la función que se conecta a la base de datos y comprueba que la contraseña es correcta).
Como dice el título estoy teniendo problemas a la hora de crear una pequeña aplicación de login basada en base de datos.
En principio todo funciona correctamente siempre y cuando indiques la contraseña correcta, pero si te equivocas y tratas de rectificar el resultado es que siempre aparece el mensaje de contraseña no válida como si fuera un bucle a pesar de que la contraseña que estás introduciendo de nuevo corrigiendo la anterior sí es correcta. (No sé si me explico bien). ¿Puede que necesite hacer una "reconexión a la base de datos en la sentecia elif?.
Como una imagen vale mil palabras os pongo el código que estoy usando. Esta es la función que se conecta a la base de datos y comprueba que la contraseña es correcta).
- def abrisapp():
-
- # PARAMETERS CONNECTION
-
- psql_HOST = "127.0.0.1"
- psql_PORT = "5432"
- psql_USER = "postgres"
- psql_PASS = "2208"
- psql_DB = "cronas"
-
- usur = self.comusu.get()
- valid = self.enusu.get()
- CAT = self.comusu.get()
- query = "SELECT passwor FROM claves WHERE usuario="+"'" + usur + "'" + ";"
-
- try:
- connstr = "host=%s port=%s user=%s password=%s dbname=%s" % (psql_HOST, psql_PORT, psql_USER, psql_PASS, psql_DB)
- conn = psycopg2.connect(connstr)
- cur = conn.cursor()
- cur.execute(query)
- row = cur.fetchall()
- conn.commit()
- cur.close()
- conn.close()
-
- def printpasswor():
-
- self.usuval.insert(0, row)
-
- if self.usuval.get() == valid:
-
- #CAT = self.comusu.get()
-
- self.prinapp = Tk()
- self.prinapp.title("CENTRO DE CONTROL DE DATOS")
- self.prinapp.geometry('1680x1050')
- self.prinapp.resizable(False, False)
- self.prinapp.protocol("WM_DELETE_WINDOW", nocerrprinapp)
-
-
- # FRAMES PRINAPP
-
- self.frameprinapp1 = ttk.Frame(self.prinapp, style="Frames.TFrame")
- self.frameprinapp1.grid(row=0, column=0)
-
- self.frameprinapp2 = ttk.Frame(self.prinapp, style="Frames.TFrame")
- self.frameprinapp2.grid(row=1, column=0)
-
- # LABELS PRINAPP
-
- self.labprinappcat = ttk.Label(self.frameprinapp1, text='C.A.T', font=('Gentium', 12, 'bold'), relief='groove', borderwidth=5, background='light green')
- self.labprinappcat.grid(row=0, column=0, pady=3)
-
- self.labprinappCAT = ttk.Label(self.frameprinapp1, text=CAT, font=('Gentium', 20, 'bold'), relief='sunken', background='#EAFF92', borderwidth=2, foreground='dark blue')
- self.labprinappCAT.grid(row=1, column=0, padx=5)
-
-
- # MENU PRINAPP
-
- self.menubar = Menu(self.prinapp, tearoff = False, font=('Gentium', 10, 'bold'), relief='ridge', activebackground='light green')
- self.menuprinapp = Menu(self.menubar, tearoff = False, font=('Gentium', 10, 'bold'), activebackground='light green')
- self.menuprinapp1 = Menu(self.menubar, tearoff = False, font=('Gentium', 10, 'bold'), activebackground='light green')
- self.menuprinapp2 = Menu(self.menubar, tearoff = False, font=('Gentium', 10, 'bold'), activebackground='light green')
- self.menuprinapp3 = Menu(self.menubar, tearoff = False, font=('Gentium', 10, 'bold'), activebackground='light green')
- self.menuabci = Menu(self.menuprinapp, tearoff = False, font=('Gentium', 10, 'bold'), activebackground='light green')
- self.menuabci1 = Menu(self.menuprinapp, tearoff = False, font=('Gentium', 10, 'bold'), activebackground='light green')
- self.menuabci2 = Menu(self.menuprinapp, tearoff = False, font=('Gentium', 10, 'bold'), activebackground='light green')
-
- self.menuprinapp.add_cascade(label='Centro Control Logístico', menu=self.menuabci)
- self.menuprinapp.add_cascade(label='Centro Control Geográfico', menu=self.menuabci1)
- self.menuprinapp1.add_command(label='Ir a ...')
-
- self.menuabci.add_command(label= 'Abrir', command=abreCCL, state='disabled')
- self.menuabci.add_command(label= 'Cerrar', command=cierraCCL)
-
- self.menuabci1.add_command(label= 'Abrir')
- self.menuabci1.add_command(label= 'Cerrar')
-
-
- self.menuprinapp.add_separator()
- self.menuprinapp.add_command(label= "Salir de Aplicación", command=quitapp)
-
- self.menubar.add_cascade(label = "Centros de Control", menu=self.menuprinapp)
- self.menubar.add_cascade(label = "Circulares", menu=self.menuprinapp1)
- self.menubar.add_cascade(label = "Procedimientos", menu=self.menuprinapp2)
- self.menubar.add_cascade(label = "Manual", menu=self.menuprinapp3)
-
- self.prinlog.destroy()
- self.prinapp.configure(menu=self.menubar)
- openCCL(self)
-
- elif self.usuval.get() != valid:
- messagebox.showinfo(message='La contraseña no es válida', title='ADVERTENCIA')
-
- printpasswor()
-
- except:
- print("Error en la conexión a la base de datos")