Решение не было, что отличается от ответа Anandhakumar в я создал глобальный список в файл параметров с помощью метода и присваивателя для него
# This buffer for the bluk insertion
global products_buffer
products_buffer = []
# Append product to the list
def add_to_products_buffer(product):
global products_buffer
products_buffer.append(product)
# Get the length of the product
def get_products_buffer_len():
global products_buffer
return len(products_buffer)
# Get the products list
def get_products_buffer():
global products_buffer
return products_buffer
# Empty the list
def empty_products_buffer():
global products_buffer
products_buffer[:] = []
Тогда я импортировал его в трубопровод
from project.settings import products_buffer,add_to_products_buffer,get_products_buffer_len,empty_products_buffer,get_products_buffer
и приложение I завершайте элемент в списке каждый раз, когда вызывается конвейер, и я проверяю, соответствует ли длина списка 100 I циклу в списке, чтобы подготовить много запросов вставки, но самая важная магия состоит в том, чтобы передать их всем в одной строке, t совершать в цикле, иначе вы ничего не выиграете, и для их вставки потребуется много времени.
def process_item(self, item, spider):
# Adding the item to the list
add_to_products_buffer(item)
# Check if the length is 100
if get_products_buffer_len() == 100:
# Get The list to loop on it
products_list = get_products_buffer()
for item in products_list:
# The insert query
self.cursor.execute('insert query')
try:
# Commit to DB the insertions quires
self.conn.commit()
# Emty the list
empty_products_buffer()
except Exception, e:
# Except the error
Также вы можете использовать executemany
, если вы не хотите, чтобы петли.
Пожалуйста, обновите свой вопрос с трубопроводом, который вы используете. –