Executemany терпит неудачу с "Не удалось выполнить операцию; Не удалось обработать параметры" - PullRequest
0 голосов
/ 10 марта 2020

Я пытаюсь настроить INSERT INTO производительность моего python кода с помощью cursor.executemany(), но я получаю некоторые ошибки.
Код:

import mysql.connector

mydb = mysql.connector.connect(
    host="database1",
    user="username1",
    passwd="password1",
    database="dbname"
)

data = [
  'A',
  'B',
  'C',
]

mycursor = mydb.cursor()
query = "INSERT INTO table_name (name) VALUES (%s)"
mycursor.executemany(query, data)
mydb.commit()

В соответствии с примером , это должно работать, однако я получаю ошибки:

Traceback (most recent call last):
  File "/Users/filipniko/PycharmProjects/scrape/darwin-scrape/venv/lib/python3.7/site-packages/mysql/connector/cursor_cext.py", line 308, in _batch_insert
    prepared = self._cnx.prepare_for_mysql(params)
  File "/Users/filipniko/PycharmProjects/scrape/darwin-scrape/venv/lib/python3.7/site-packages/mysql/connector/connection_cext.py", line 632, in prepare_for_mysql
    raise ValueError("Could not process parameters")
ValueError: Could not process parameters

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "dbtest.py", line 18, in <module>
    mycursor.executemany(query, data)
  File "/Users/filipniko/PycharmProjects/scrape/darwin-scrape/venv/lib/python3.7/site-packages/mysql/connector/cursor_cext.py", line 350, in executemany
    stmt = self._batch_insert(operation, seq_params)
  File "/Users/filipniko/PycharmProjects/scrape/darwin-scrape/venv/lib/python3.7/site-packages/mysql/connector/cursor_cext.py", line 329, in _batch_insert
    "Failed executing the operation; %s" % err)

mysql.connector.errors.InterfaceError: Failed executing the operation; Could not process parameters

Примечания:

  • Таблица пуста
  • Я могу добавить строки, используя mycursor.execute для каждого элемента в списке

Схема таблицы выглядит следующим образом:

+-------+--------------+------+-----+---------+----------------+
| Field | Type         | Null | Key | Default | Extra          |
+-------+--------------+------+-----+---------+----------------+
| id    | int(11)      | NO   | PRI | NULL    | auto_increment |
| name  | varchar(100) | NO   | UNI | NULL    |                |
+-------+--------------+------+-----+---------+----------------+

Что я делаю не так?

1 Ответ

0 голосов
/ 10 марта 2020

Я понял, что использую неправильную зависимость, я должен использовать mySQLdb вместо mysql.connector:

import MySQLdb as my

mydb = my.connect(
    host="database1",
    user="username1",
    passwd="password1",
    database="dbname"
)

data = [
  'A',
  'B',
  'C',
]

mycursor = mydb.cursor()
query = "INSERT INTO table_name (name) VALUES (%s)"
mycursor.executemany(query, data)
mydb.commit()

https://thepythonguru.com/inserting-rows/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...