Error al querer borrar un registro en MySql

Hola como andan. Tengo un inconveniente, a ver si a alguien le ha pasado.
Quiero eliminar un registro de una tabla en MySql y me tira error cuando uso %s… Acá les paso el código y el error que larga.

def delete_data(self):
if self.matricula_var.get()==“” or self.nombre_var.get()==“” or self.email_var.get()==“” or self.genero_var.get()==“” or self.telefono_var.get()==“” or self.fecnac_var.get()==“”:
messagebox.showerror(“Error”, “Seleccione el registro a eliminar”)
else:
con=mysql.connector.connect(host=“localhost”, user=“root”, password=“”, database=“studentm”)
cur=con.cursor()
cur.execute(“delete from estudiantes where matricula=%d”,self.matricula_var.get())
con.commit()
self.fetch_data()
self.clear()
messagebox.showinfo(“Eliminar”, “Se eliminó correctamente el registro”)
con.close()

Este es el código y me tira el siguiente error:

cur.execute(“delete from estudiantes where matricula=%d”,self.matricula_var.get())
File “/usr/lib/python3/dist-packages/mysql/connector/cursor_cext.py”, line 359, in execute
prepared = self._cnx.prepare_for_mysql(params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/mysql/connector/connection_cext.py”, line 880, in prepare_for_mysql
raise ProgrammingError(
mysql.connector.errors.ProgrammingError: Could not process parameters: str(47765), it must be of type list, tuple or dict

El error te está diciendo la causa, le estas pasando un texto como
parametro, pero espera una list o tupla o diccionario, porque puede
haber varios parametros si se especificase otra sentencia sql.

Podes pnerlo asi:
cur.execute(“delete from estudiantes where matricula=%d”,
[self.matricula_var.get()])

Saludos,

Javier.

1 me gusta

Hola Javier. Muchisimas gracias por la respuesta. Ahora lo pruebo.

Muchas gracias Javier nuevamente. Anduvo perfecto. Solo cambie %d por %s porque me habia equivocado cuando hice la consulta. Me faltaban los corchetes al ser una tupla. Gracias por tu ayuda. Saludos cordiales

1 me gusta