MySQL Connector не может обработать параметры - PullRequest
0 голосов
/ 04 февраля 2019

Я пытаюсь перебрать массив и вставить каждый элемент в таблицу.Насколько я вижу, мой синтаксис правильный, и я взял этот код прямо из документации 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.")

Когда я запускаю, он получает cursor.execute(...), а затем завершается ошибкой.Вот трассировка стека.

Трассировка (последний последний вызов): файл «test.py», строка 29, в cursor.execute («INSERT INTO test (serial) VALUES (% s)»", (" test ")) Файл" C: \ Users \ AlexJ \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ site-packages \ mysql \ connector \ cursor_cext.py ", строка 248, в выполнить приготовлено = самостоятельно._cnx.prepare_for_mysql (params) Файл "C: \ Users \ AlexJ \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ site-packages \ mysql \ connector \ connection_cext.py", строка 538, в prepare_for_mysql поднять ValueError ("Не удалось обработать параметры ") ValueError: Не удалось обработать параметры

1 Ответ

0 голосов
/ 04 февраля 2019

Попробуйте это:

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.")

Поскольку вы используете модуль mysql, cursor.execute требует SQL-запрос и кортеж в качестве параметров

...