爬虫 异步数据写入框架 (adbapi)

news/2024/7/19 11:21:02 标签: 数据库, 爬虫, python
数据库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, tags, content, zan_num, keep_num, comment_num, img_src, img_path) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s)"
        cursor.execute(insert_sql, (item['title'], item['date_time'], item['tags'], item['content'], item['zan_num'], item['keep_num'], item['comment_num'], item['img_src'], item['img_path']))

       在execute()之后,不需要再进行commit(),连接池内部会进行提交的操作。

 



 

转载于:https://www.cnblogs.com/eunuch/p/9308520.html


http://www.niftyadmin.cn/n/817470.html

相关文章

Pytorch系列2:实现不同层设置不同的学习率

1、选择要调整的学习率对应的层,这里以conv5为例“ net net() lr 0.001conv5_params list(map(id, net.conv5.parameters())) base_params filter(lambda p: id(p) not in conv5_params,net.parameters()) optimizer torch.optim.SGD([{params: base_params},…

人工智能红利:程序员的4种享用方式

自从阿尔法狗 4:1 战胜人类最强棋手李世石之后,人们的焦虑就从未停止过: 围棋选手开始怀疑自己钻研棋谱几十年的意义工作中重复性劳动占比较高的雇员越发担忧自己会很快被机器替代知乎上关于什么工作不会被 AI 替代的讨论越来越热烈普罗大众开始害怕机器…

PHP-MySQL连接封装-其他简单封装

封装了MySQL连接以及操作数据库常用方法等等&#xff0c;其他简单封装&#xff0c;有点strange...。1、MySQL连接1.1、配置文件&#xff0c;创建 config.php<?php//项目配置文件return $config array(host > 127.0.0.1,user > root,password > root,dbname > …

Pytorch系列1: torch.nn.Sequential()讲解

torch.nn.Sequential是一个Sequential容器&#xff0c;模块将按照构造函数中传递的顺序添加到模块中。通俗的话说&#xff0c;就是根据自己的需求&#xff0c;把不同的函数组合成一个&#xff08;小的&#xff09;模块使用或者把组合的模块添加到自己的网络中。主要有两种使用方…

从5千到3万,程序员的成长课

作为一名普通的程序员&#xff1a; 你想买一套房子&#xff0c;不想再租住在远离公司的偏僻地带每天通勤 4 个小时上下班你想买一部车子&#xff0c;可以周末开着去山里转转&#xff0c;看看红叶听听鸟鸣你想买衣服时去窗明几净微笑服务的商场而不是每次都找一个不知名姓的小二…

离散数学的一些概念

&#xff11;.前束范式 一个公式&#xff0c;如果量词均在全式的开头&#xff0c;它们的作用域延伸到整个公式的末尾&#xff0c;则称为是前束范式。例如&#xff1a;(x)(y)(z)&#xff08;Q(x,y)→R(z)&#xff09;的地方是并或交。任何一个谓词公式都有一个前束范式等…

我们未曾尽力的2017,哪些目标没实现?

豁然发现&#xff0c;2017 再有十几天就要过去啦&#xff01; ◇ 你的目标在哪里&#xff1f;实现了吗&#xff1f; 可是我的年度目标&#xff0c;年度目标呢——都找不见了。/(ㄒoㄒ)/~~ 可劲儿回想了半天&#xff0c;终于想起来参加小强老师&#xff08;《小强升职记》作…

pytorch系列3:在预训练好的模型上进行微调

在训练网络时经常要进行微调&#xff0c;原来用caffe比较多&#xff0c;相对来说caffe的微调要简单&#xff0c;那么pytorch是怎么实现网络的微调呢&#xff0c;我的方法是&#xff1a; # 导入原来的网络 import modules_original # 导入新的网络 import modulespre_net modu…