Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Número de parâmetros de consulta do MySQL correspondem aos argumentos passados ​​para execução, mas o Python gera nem todos os argumentos convertidos


A maneira correta de escrever declarações preparadas é a seguinte:
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()

O erro vem do fato de que o módulo mysql não encontra onde colocar os parâmetros que você está dando a ele, porque ele não interpreta os pontos de interrogação como placeholders e, portanto, está produzindo um erro informando que _mysql_exceptions.ProgrammingError: not all arguments converted during string formatting , que em linguagem humana, significa que não pode caber seus argumentos na string de formato.