У меня есть рабочий скрипт с использованием scrapy, который вставляет очищенные элементы в базу данных с помощью класса конвейеров.Однако это, кажется, значительно замедляет процесс очистки.Я использую метод элемента процесса, чтобы вставить каждый очищенный элемент в базу данных по мере его удаления.Будет ли быстрее вывести очищенные элементы в CSV-файл, а затем использовать хранимую процедуру для вставки данных в базу данных?
def process_item(self, item, spider):
if 'address_line_1' in item:
sql = """INSERT dbo.PropertyListings (date, url, ad_type, address_line_1, suburb, state, postcode)
SELECT ?, ?, ?, ?, ?, ?, ?
WHERE NOT EXISTS
( SELECT 1
FROM dbo.PropertyListings
WHERE date = ?
AND address_line_1 = ?
AND suburb = ?
AND state = ?
And postcode = ?
)
"""
self.crsr.execute(sql, item['date'], item['url'], item['ad_type'], item['address_line_1'], item['suburb'], \
item['state'], item['postcode'], item['date'], item['address_line_1'], item['suburb'], item['state'], \
item['postcode'])
self.conn.commit()
else:
sql = """INSERT dbo.PropertyListings (date, url, ad_type, address_line_1, suburb, state, postcode)
SELECT ?, ?, ?, ?, ?, ?, ?
WHERE NOT EXISTS
( SELECT 1
FROM dbo.PropertyListings
WHERE date = ?
AND url = ?
)
"""
self.crsr.execute(sql, item['date'], item['url'], item['ad_type'], '', item['suburb'], \
item['state'], item['postcode'], item['date'], item['url'])
self.conn.commit()
return item