[ Foro de Python ]
Llevo dias con un error que no consigo solucionar, he creado un programa para registro de datos, añadir, guardar, editar, eliminar.... pero no consigo editar el registro y que se actualice la base de datos que muestra a traves de una tabla , y tampoco la funcion eliminar.
def editar(cliente,id_cliente):
conexion =conexionDB()
sql=f"""Update clientes SET nombre='{cliente.nombre}',edad='{cliente.edad}',genero='{cliente.genero}',ncontacto='{cliente.ncontacto}',email='{cliente.email}',cuota='{cliente.cuota}'
WHERE id_cliente={id_cliente}"""
try:
print("sql_editar", sql, id_cliente)
print(cliente)
conexion.cursor.execute(sql)
conexion.commit()
except:
titulo ="conexion al registro"
mensaje= "No se ha podido EDITAR"
messagebox.showerror(titulo,mensaje)
pass
def eliminar(id_cliente):
conexion=conexionDB()
sql=f'''DELETE FROM clientes WHERE id_cliente =?'''
print("eliminar:",id_cliente)
try:
conexion.cursor.execute(sql)
conexion.cerrar()
except:
titulo="ELIMINAR REGISTRO"
mensaje= "No se puede eliminar el registro"
messagebox.showerror(titulo,mensaje)
¡Hola! Parece que estás teniendo algunos problemas con las funciones 'editar' y 'eliminar' de tu programa. A continuación, te proporciono algunas sugerencias para solucionarlos:
En la función 'editar', parece que estás utilizando f-strings para construir la consulta SQL. Asegúrate de que los valores de 'cliente.nombre', 'cliente.edad', 'cliente.genero', 'cliente.ncontacto', 'cliente.email' y 'cliente.cuota' estén correctamente definidos antes de pasarlos a la consulta. Además, en la línea 'conexion.cursor.execute(sql)', deberías cambiarla por 'conexion.cursor().execute(sql)' ya que 'cursor' es un método.
En la función 'eliminar', estás utilizando un placeholder en la consulta SQL, pero no estás pasando ningún valor a través de él. En su lugar, deberías usar una coma para separar los valores en la lista de parámetros que se pasa a 'execute()'. Además, en la línea 'conexion.cerrar()', deberías cambiarla por 'conexion.cerrar()' ya que 'cerrar' es un método.
Aquí te dejo una posible solución a tus problemas:
def editar(cliente, id_cliente):
conexion = conexionDB()
sql = f"""UPDATE clientes SET nombre='{cliente.nombre}', edad='{cliente.edad}', genero='{cliente.genero}', ncontacto='{cliente.ncontacto}', email='{cliente.email}', cuota='{cliente.cuota}'
WHERE id_cliente={id_cliente}"""
try:
print("sql_editar", sql, id_cliente)
print(cliente)
conexion.cursor().execute(sql)
conexion.commit()
except:
titulo = "conexion al registro"
mensaje = "No se ha podido EDITAR"
messagebox.showerror(titulo, mensaje)
pass
def eliminar(id_cliente):
conexion = conexionDB()
sql = '''DELETE FROM clientes WHERE id_cliente = ?'''
print("eliminar:", id_cliente)
try:
conexion.cursor().execute(sql, (id_cliente,))
conexion.cerrar()
except:
titulo = "ELIMINAR REGISTRO"
mensaje = "No se puede eliminar el registro"
messagebox.showerror(titulo, mensaje)
Espero que esto te ayude a solucionar tus problemas. ¡Buena suerte con tu programa!
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)