Scrapy MySQL: MySQLdb._exceptions.ProgrammingError: не все аргументы, преобразованные во время форматирования байтов - PullRequest
1 голос
/ 22 октября 2019

Когда я запускаю свой код, я получаю следующую ошибку.

2019-10-22 09:14:24 [scrapy.utils.signal] ОШИБКА: обнаружена ошибка в обработчике сигнала: BooksSpider.close of> Traceback (последний вызов был последним): файл "/home / mx / python-virtual-environment / scrapy / lib / python3.5 / site-> packages / MySQLdb / cursors.py ", строка 204, в запросе на выполнение = запрос% args TypeError: не все аргументы преобразованы во время форматирования байтов

Во время обработки вышеупомянутого исключения произошло другое исключение:

Трассировка (последний вызов был последним): файл "/home/mx/python-virtual-environments/scrapy/lib/python3.5/site->packages/twisted/internet/defer.py ", строка 151, в файле MaybeDeferred result = f (* args, ** kw) File" / home / mx / python-virtual-environment / scrapy / lib / python3. 5 / site-> packages / pydispatch / robustapply.py ", строка 55, в robustApply приемник возврата (* аргументы, ** именованные) Файл" /home/mx/Desktop/books_crawler/books_crawler/spiders/books_SQL.py ", строка79, в закрытом cursor.execute ("INSERT IGNORE INTO books_table (название, описание, рейтинг, upc,> доступныйty) "" VALUES ('% s', '% s', '% s', '% s') ", строка) Файл" /home/mx/python-virtual-environments/scrapy/lib/python3.5/site->packages/MySQLdb/cursors.py ", строка 206, в повышение выполнения ProgrammingError (str (m)) MySQLdb._exceptions.ProgrammingError: не все аргументы, преобразованные во время форматирования байтов

Я пыталсяпереформатировать '% s' многочисленными способами, но не знаю, что я делаю неправильно.

Это фрагмент моего кода: >

csv_data = csv.reader (open (csv_file))

   row_count = 0
   for row in csv_data:
       if row_count != 0:
           cursor.execute("INSERT IGNORE INTO books_table(title, description, rating, upc, >availability) VALUES('%s', '%s', '%s', '%s')", row)
       row_count += 1

   mydb.commit()
   cursor.close()

1 Ответ

0 голосов
/ 22 октября 2019

проверка mysql веб-сайт , параметры не заключены в одинарные кавычки. Возможно, захотите попробовать это. Я также удалил больший символ > в столбце доступности.

row_count = 0
   for row in csv_data:
       if row_count != 0:
           cursor.execute("INSERT IGNORE INTO books_table(title, description, rating, upc, availability) VALUES(%s, %s, %s, %s)", row)
       row_count += 1

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