Mysql
 sql >> Base de données >  >> RDS >> Mysql

Le nombre de paramètres de requête MySQL correspond aux arguments passés à exécuter, mais Python ne génère pas tous les arguments convertis

La manière correcte d'écrire des déclarations préparées est la suivante :

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()

L'erreur vient du fait que le module mysql ne trouve pas où mettre les paramètres que vous lui donnez, car il n'interprète pas les points d'interrogation comme des espaces réservés, et produit donc une erreur vous indiquant que _mysql_exceptions.ProgrammingError: not all arguments converted during string formatting , ce qui, en langage humain, signifie qu'il ne peut pas contenir vos arguments dans la chaîne de format.