异步写入数据库

使用异步写入数据库的原因:
1.同步: 同步写入数据速度比较慢, 而爬虫速度比较快, 可能导致数据最后写不到数据库中。
2. 异步: 是将爬虫的数据先放到一个连接池中, 再同时将连接池的数据写入到数据库中, 这样既可以提高数据库的写入速度, 同时也可以将爬取到的所有数据都写到数据库中, 保证数据的完整性。
异步写入流程:

  1. 在settings中配置Mysql链接需要的参数
  2. 自定义Pipeline,实现from_settings函数
  3. from twisted.enterprise import adbapi 引入连接池模块
  4. from pymysql import cursors 引入游标模块
  5. 在from_settings中,准备链接数据库参数,创建db_pool连接池,创建返回当前类的对象,传入db_pool
  6. 实现初始化函数,在初始化函数中,将db_pool赋值self的属性
  7. 实现process_item函数
    7.1 query = self.db_pool.runInteraction(执行插入数据操作的函数对象,函数需要参数),并接受执行返回结果
    7.2 query.addErrback(错误回调函数,函数需要参数),添加执行sql失败回调的函数,在回调函数中对错误数据进一步处理
  8. 实现插入数据操作的函数,准备sql,执行sql
  9. 实现错误回调函数,在回调函数中对错误数据进一步处理
    具体代码如下:
From twisted.enterprise
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值