2015-02-07 2 views
0

여러 웹 사이트에서 데이터를 가져 와서 해당 정보를 mysql 테이블로 업데이트하는 크롤러가 있습니다. 크롤러를 작성하는 데 치료법을 사용하고 있습니다. 크롤러는 많은 수의 열을 삽입/업데이트합니다. 대량으로 항목을 삽입/업데이트 할 수 있습니까?Scrapy bulk insert

답변

0

확실하지 무엇을 요구하고있다,하지만 당신은, 당신의 scrapy 프로젝트의 pipelines.py이 같은 MySQL의 파이프 라인을 설정할 수 있습니다 : 다음

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 레코드를 쓰는 것과 비교할 때 많은 시간이 걸릴 것입니다. 나는 치료법이 레코드를 MySQL로 플러시 할 때 (10,000과 같은) 그러한 숫자를 지정할 수 있는지 이해하고 싶었다. – katrix