web-dev-qa-db-fra.com

Le connecteur MySQL n'a pas pu traiter les paramètres

J'essaie de boucler à travers un tableau et d'insérer chaque élément dans une table. Autant que je sache, ma syntaxe est correcte et j'ai suivi ce code directement de la documentation de Microsoft Azure .

try:
   conn = mysql.connector.connect(**config)
   print("Connection established")
except mysql.connector.Error as err:
  if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:
    print("Something is wrong with the user name or password")
  Elif err.errno == errorcode.ER_BAD_DB_ERROR:
    print("Database does not exist")
  else:
    print(err)
else:
  cursor = conn.cursor()
data = ['1','2','3','4','5']


for x in data:
   cursor.execute("INSERT INTO test (serial) VALUES (%s)",(x))
   print("Inserted",cursor.rowcount,"row(s) of data.")

conn.commit()
cursor.close()
conn.close()
print("Done.")

Lorsque je cours, cela passe à cursor.execute(...) puis échoue. Voici la trace de la pile.

Traceback (appel le plus récent): fichier "test.py", ligne 29, dans curseur.execute ("Insertion dans les valeurs de test (série) (% s)", ("test")) Fichier "C:\users\users Alexj\Appdata\Local\Programmes\Python\Python37\Lib\Site-packages\mysql\connecteur\cursor_cext.py ", ligne 248, dans l'exécution Préparé = Self._cnx.prepare_for_mysql (paramètres) Fichier" C:\Utilisateurs\Alexj\AppData\Local\Programmes\Python\Python37\LIB\SITE-PACKAGES\MYSQL\Connector\Connection_Cext.py ", Line 538, dans préparer_for_mysql ascensionnement ValueError (" Impossible de traiter les paramètres ") ValueError: impossible de traiter les paramètres

4
ajjohnson190

Essaye ça:

for x in data:
    value = 'test'
    query = "INSERT INTO test (serial) VALUES %s"
    cursor.execute(query,(value,))
    print("Inserted",cursor.rowcount,"row(s) of data.")

Puisque vous utilisez le module MySQL, cursor.execute nécessite une requête SQL et un tuple en tant que paramètres

14
Lucas Hort