Scrapy Spider не вставляет данные в MySQL - PullRequest
0 голосов
/ 09 января 2020

Я новичок в Python и код, который я написал, не работает, как я ожидал. Я пытаюсь вставить элемент с помощью Scrapy Spider в базу данных MySQL, но когда я проверяю базу данных, этого элемента нет.

Код моего конвейера ниже.


from __future__ import print_function
import mysql.connector
from mysql.connector import errorcode


class LyricsPipeline(object):

    def __init__(self):
        self.create_connection()
        # self.create_table()

    def create_connection(self):
        self.conn = mysql.connector.connect(
            host='localhost',
            user='root',
            passwd='',
            database='lyrical'
        )
        self.curr = self.conn.cursor()

    # def create_table(self):
    #     self.curr.execute("""DROP TABLE IF EXISTS llyrics""")
    #     self.curr.execute("""create table llyrics (
    #         title text,
    #         movie text,
    #         lyrics text
    #     )""")
    def process_item(self, item, spider):
        self.store_db(item)
        return item

    def store_db(self, item):
        self: curr.execute("""insert into mylyrics values ('title','movie','lyrics')""", (
            item['title'][0],
            item['movie'][0],
            item['lyrics'][0]
        ))
        self.conn.commit()

Что я скучаю, не могли бы вы посоветовать мне?

1 Ответ

0 голосов
/ 09 января 2020

Я предполагаю, что элемент правильно передан этой функции, и вы получаете его из конвейера - также ваш конвейер добавляется в настройках, таких как: setting.py

ITEM_PIPELINES = {
   'some_spider.pipelines.SpiderDataPipeline': 300,
}

, где 300 - его важность (для больше проверяйте документацию по скрапингу - Трубопровод скрапа делает c).

Вторая вещь может быть вашей функцией store_db. Попробуйте это:

def store_db(self, item):
    self.curr.execute("insert into mylyrics values (%s,%s,%s)", (
        item['title'][0],
        item['movie'][0],
        item['lyrics'][0]
    ))
    self.conn.commit()

Надеюсь, что это поможет вам решить проблему.

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