0
여러 웹 사이트에서 데이터를 가져 와서 해당 정보를 mysql 테이블로 업데이트하는 크롤러가 있습니다. 크롤러를 작성하는 데 치료법을 사용하고 있습니다. 크롤러는 많은 수의 열을 삽입/업데이트합니다. 대량으로 항목을 삽입/업데이트 할 수 있습니까?Scrapy bulk insert
여러 웹 사이트에서 데이터를 가져 와서 해당 정보를 mysql 테이블로 업데이트하는 크롤러가 있습니다. 크롤러를 작성하는 데 치료법을 사용하고 있습니다. 크롤러는 많은 수의 열을 삽입/업데이트합니다. 대량으로 항목을 삽입/업데이트 할 수 있습니까?Scrapy bulk insert
확실하지 무엇을 요구하고있다,하지만 당신은, 당신의 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}
scrapy가 SQL 레코드 하나에 시간을 기록하는 경우 일괄 쿼리에서 10,000 레코드를 쓰는 것과 비교할 때 많은 시간이 걸릴 것입니다. 나는 치료법이 레코드를 MySQL로 플러시 할 때 (10,000과 같은) 그러한 숫자를 지정할 수 있는지 이해하고 싶었다. – katrix