Мой скрипт Scrapy выдает ошибку, всего шесть, но я просто расскажу об ошибке SQL здесь. Моя цель - создать веб-страницу, собрать около 200 ссылок и сохранить их в базе данных MySQL (локальной).
Таблица создана нормально (scraped_tb), но она пуста.
Вот код:
# -*- coding: utf-8 -*-
import mysql.connector
class HistPipeline(object):
def __init__(self):
self.create_connection()
self.create_table()
def create_connection(self):
self.conn = mysql.connector.connect(
host='localhost',
user='root',
passwd='redacted',
database='scrape'
)
self.curr = self.conn.cursor()
def create_table(self):
self.curr.execute("""DROP TABLE IF EXISTS scraped_tb""")
self.curr.execute("""create table scraped_tb(
links text
)""")
def process_item(self, item, spider):
self.store_db(item)
return item
def store_db(self, item):
self.curr.execute("""INSERT INTO scraped_tb VALUES (%s)""", (
item['links'][0]
))
self.conn.commit()
Ошибка (я): я хочу толькоисправьте ошибку SQL в это время.
Traceback (most recent call last):
File "c:\users\redacted\pycharmprojects\sc\venv\lib\site-packages\twisted\internet\defer.py", line 654, in _runCallbacks
current.result = callback(current.result, *args, **kw)
File "C:\Users\redacted\PycharmProjects\sc\hist\hist\pipelines.py", line 32, in process_item
self.store_db(item)
File "C:\Users\redacted\PycharmProjects\sc\hist\hist\pipelines.py", line 37, in store_db
item['links'][0]
File "c:\users\redacted\pycharmprojects\sc\venv\lib\site-packages\mysql\connector\cursor.py", line 569, in execute
self._handle_result(self._connection.cmd_query(stmt))
File "c:\users\redacted\pycharmprojects\sc\venv\lib\site-packages\mysql\connector\connection.py", line 590, in cmd_query
result = self._handle_result(self._send_cmd(ServerCmd.QUERY, query))
File "c:\users\redacted\pycharmprojects\sc\venv\lib\site-packages\mysql\connector\connection.py", line 478, in _handle_result
raise errors.get_exception(packet)
mysql.connector.errors.ProgrammingError: 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near
'%s)' at line 1