使用Scrapy时如何将多个项目插入数据库?

现在大多数数据库都支持一次将多条记录插入数据库。这比一条一条插入记录要快得多,因为只需要一笔事务。SQL 语法与此类似:

INSERT INTO tbl_name (a,b,c)
VALUES(1,2,3), (4,5,6), (7,8,9);

现在我正在一个小项目上使用Python Scrapy。我使用其项目管道将抓取的数据存储到数据库中。然而,项目管道背后的逻辑是,将在每个项目上调用相关方法。所以它总是一次插入一个项目。我怎样才能收集大约 100 个项目并在一次运行中插入它们?


PIPIONE
浏览 137回答 1
1回答

POPMUISE

您需要将管道重构为如下所示:class DatabasePipeline(object):    def open_spider(self, spider):        #Create database connection        ...        #create items list        self.items = []    def process_item(self,item,spider):        self.items.append(item)        if len(self.items)==100:            #constuct SQL query to insert multiple records            ...            #execute query and clean self.items            self.items = []        return item    def close_spider(self,spider):        #insert remaining records        if self.items:            #constuct SQL query to insert multiple records            ...            #execute query        #close database connection
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python