sql >> Base de Datos >  >> RDS >> Mysql

El número de parámetros de consulta de MySQL coincide con los argumentos pasados ​​para ejecutar, pero Python genera no todos los argumentos convertidos

La forma correcta de escribir declaraciones preparadas es la siguiente:

def create_student(surname, forename, dob, address, phone, gender, tutor, email):
    cursor = mysql.connection.cursor()
    cursor.execute('''
        INSERT INTO students(surname, forename, dob, address, phone, gender, tutor, email)
        VALUES(%s, %s, %s, %s, %s, %s, %s, %s)''', (surname, forename, dob, address, phone, gender, tutor, email))
    mysql.connection.commit()

El error proviene del hecho de que el módulo mysql no encuentra dónde colocar los parámetros que le está dando, porque no interpreta los signos de interrogación como marcadores de posición y, por lo tanto, produce un error que le dice que _mysql_exceptions.ProgrammingError: not all arguments converted during string formatting , que en lenguaje humano significa que no caben sus argumentos en la cadena de formato.