Python 为什么有必要将pipelines.py中的项目返回到scrapy中?

Python 为什么有必要将pipelines.py中的项目返回到scrapy中?,python,scrapy,Python,Scrapy,py将解析后的数据发送到数据库、文件或json中。管道,从scrapy的架构概述来看,共有9个步骤,步骤1-8构成一个完整的循环,步骤9创建一个新流程,其中包含8个其他相同的流程,如前一个流程 在一些示例pipeline.py中,我们经常看到如下代码: import pymysql.cursors class MySQLPipeline(object): def __init__(self): self.connect = pymysql.connect(

py将解析后的数据发送到数据库、文件或json中。管道,从scrapy的架构概述来看,共有9个步骤,步骤1-8构成一个完整的循环,步骤9创建一个新流程,其中包含8个其他相同的流程,如前一个流程

在一些示例pipeline.py中,我们经常看到如下代码:

import pymysql.cursors
class MySQLPipeline(object):
    def __init__(self):
        self.connect = pymysql.connect(
            host='127.0.0.1',  
            port=3306,  
            db='xxxx',  
            user='root',  
            passwd='xxxx',  
            charset='utf8',  
            use_unicode=True)
        self.cursor = self.connect.cursor()

    def process_item(self, item, spider):
        self.cursor.execute("sql_insert_command")
        self.connect.commit()
        return item  
pipelines.py
是整个8个流程中的最后一步,为什么将项目发送到数据库或其他存储方式后
在pipelines.py中返回项目
item
已插入数据库,在scrapy中的任何组件再次调用
item
是没有用的?
我已经测试了
退货项目
不能省略,想知道原因吗?

来自:

为每个项目管道组件调用此方法。 进程_item()必须:返回包含数据的dict,返回项 (或任何后代类)对象,返回一个 DropItem异常。丢弃的项目不再由其他用户处理 管道组件


Scrapy支持同时启用多个管道

这就是为什么管道向前传递项目很重要的原因,除非它们是专门用于放置某些项目的管道

例如,除了将项目存储在数据库中之外,您还可以稍后决定添加第二个在本地存储项目的管道