2015-02-07 4 views
0

У меня есть искатель, который извлекает данные с нескольких веб-сайтов и обновляет информацию в таблице mysql. Я использую scrapy для записи искателя. Искатель будет вставлять/обновлять большое количество столбцов. Возможно ли навалом вставить/обновить предметы в области скрининга?Scrapy bulk insert

ответ

0

Не уверен, что вы просите, но вы можете настроить MySQL трубопровода в pipelines.py вашего Scrapy проекта, что-то вроде этого:

class SQL(object): 
    def __init__(self): 
     self.conn = MySQLdb.connect(user='user', passwd='pass', db='DB', host='servername', charset='utf8') 
     self.cursor = self.conn.cursor() 

    def process_item(self, item, spider): 
     try: 
      self.cursor.execute('INSERT INTO table (month, year, date) VALUES (%s,%s,%s)', (item['month'], item['year'], item['date'])) 
      self.conn.commit() 
     except MySQLdb.Error, e: 
      print item 
      print "Error %d: %s" % (e.args[0], e.args[1]) 
     return item 

Затем включите его в settings.py

ITEM_PIPELINES = {'PROJECTNAME.pipelines.SQL': 300} 
+0

Если scrapy пишет в sql один рекорд времени, это займет много времени по сравнению с написанием, скажем, 10 000 записей в одном массовом запросе. Я хотел бы понять, могу ли я указать такое число (например, 10 000), когда scrapy очистит записи до MySQL – katrix