当我运行我的代码时,出现以下错误。
2019-10-22 09:14:24 [scrapy.utils.signal] ERROR: Error caught on signal handler: BooksSpider.close of > Traceback (most recent call last): File "/home/mx/python-virtual-environments/scrapy/lib/python3.5/site->packages/MySQLdb/cursors.py", line 204, in execute query = query % args TypeError: not all arguments converted during bytes formatting
During handling of the above exception, another exception occurred:
Traceback (most recent call last): File "/home/mx/python-virtual-environments/scrapy/lib/python3.5/site->packages/twisted/internet/defer.py", line 151, in maybeDeferred result = f(*args, **kw) File "/home/mx/python-virtual-environments/scrapy/lib/python3.5/site->packages/pydispatch/robustapply.py", line 55, in robustApply return receiver(*arguments, **named) File "/home/mx/Desktop/books_crawler/books_crawler/spiders/books_SQL.py", line 79, in close cursor.execute("INSERT IGNORE INTO books_table(title, description, rating, upc, >availability)" "VALUES('%s', '%s', '%s', '%s')", row) File "/home/mx/python-virtual-environments/scrapy/lib/python3.5/site->packages/MySQLdb/cursors.py", line 206, in execute raise ProgrammingError(str(m)) MySQLdb._exceptions.ProgrammingError: not all arguments converted during bytes formatting
我尝试用多种方式重新格式化“%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()
最佳答案
正在检查 mysql website , 参数没有用单引号引起来。可能想试试这个。我还删除了可用性列中更大的 >
符号。
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()
关于python - Scrapy MySQL : MySQLdb. _exceptions.ProgrammingError: 并非所有参数都在字节格式化期间转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58499218/