Mysql 片状块状嵌件

Mysql 片状块状嵌件,mysql,scrapy,Mysql,Scrapy,我有一个爬虫程序,可以从多个网站获取数据,并将信息更新到mysql表中。我正在使用scrapy编写爬虫程序。爬虫程序将插入/更新大量列。是否可以在scrapy中批量插入/更新项目?不确定您的要求,但您可以在scrapy项目的pipelines.py中设置mysql管道,如下所示: class SQL(object): def __init__(self): self.conn = MySQLdb.connect(user='user', passwd='pass', db

我有一个爬虫程序,可以从多个网站获取数据,并将信息更新到mysql表中。我正在使用scrapy编写爬虫程序。爬虫程序将插入/更新大量列。是否可以在scrapy中批量插入/更新项目?

不确定您的要求,但您可以在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写入一条记录,那么与在一个批量查询中写入10000条记录相比,它将占用大量时间。我想知道,当scrapy将记录刷新到MySQL时,我是否可以指定像10000这样的数字