为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PIPIONE 2023-10-26 14:28:24
现在大多数数据库都支持一次将多条记录插入数据库。这比一条一条插入记录要快得多,因为只需要一笔事务。SQL 语法与此类似:INSERT INTO tbl_name (a,b,c) VALUES(1,2,3), (4,5,6), (7,8,9);现在我正在一个小项目上使用Python Scrapy。我使用其项目管道将抓取的数据存储到数据库中。然而,项目管道背后的逻辑是,将在每个项目上调用相关方法。所以它总是一次插入一个项目。我怎样才能收集大约 100 个项目并在一次运行中插入它们?
查看完整描述

1 回答

?
POPMUISE

TA贡献1765条经验 获得超5个赞

您需要将管道重构为如下所示:


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


查看完整回答
反对 回复 2023-10-26
  • 1 回答
  • 0 关注
  • 136 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信