爬虫中异步数据写入MySQL数据库方法(adbapi)
数据库pymysql的commit()和execute()在提交数据时,都是同步提交至数据库,由于scrapy框架数据的解析和异步多线程的,所以scrapy的数据解析速度,要远高于数据的写入数据库的速度。如果数据写入过慢,会造成数据库写入的阻塞,影响数据库写入的效率。
通过多线程异步的形式对数据进行写入,可以提高数据的写入速度。
使用twisted异步IO框架,实现数据的异步写入。
from twisted.enterprise import adbapi
# 初始化数据库连接池(线程池)
# 参数一:mysql的驱动
# 参数二:连接mysql的配置信息
dbpool = adbapi.ConnectionPool('pymysql', **params)
参数1:在异步任务中要执行的函数insert_db;
参数2:给该函数insert_db传递的参数
query = self.dbpool.runInteraction(self.insert_db, item)
def insert_db(self, cursor, item):
insert_sql = "INSERT INTO bole(title, date_time, tag