现在大多数数据库都支持一次插入多条记录到数据库中。这比一条一条地插入记录要快得多,因为只需要一个事务。 SQL 语法类似于:
INSERT INTO tbl_name (a,b,c)
VALUES(1,2,3), (4,5,6), (7,8,9);
现在我正在一个小项目上使用 Python Scrapy。我使用它的项目管道将抓取的数据存储到数据库中。但是,项目管道背后的逻辑是将在每个项目上调用相关方法。所以它总是一次插入一个项目。我怎样才能一次收集大约 100 个项目并将它们插入?
最佳答案
您需要将管道重构为如下所示:
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
关于python - 使用 Scrapy 时如何将多个项目插入数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64285317/