mysql异步写入数据库_scrapy爬虫框架中数据库(mysql)的异步写入
####数据库的异步写入
scrapy爬虫框架里数据库的异步写入与同步写入在代码上的区别也就在pipelines.py文件和settings.py问价的区别,其他的都是一样的。本文就介绍一下pipelines.py和settings.py文件里面是如何配置的。
1、先到settings.py文件里面配置数据库的相关字段
2、先在pipelines.py文件里面导入相关模块
import pymysql
from scrapy.pipelines.images import ImagesPipeline
# twisted: 用于异步写入(包含数据库)的框架,cursor.execute()是同步写入
from twisted.enterprise import adbapi
3、数据库写入部分代码如下:
要在from_settings这个类方法里面写上加载配置数据的代码
然后创建一个数据库连接池对象,里面可以包含多个connect连接对象
class MySQLTwistedPipeline(object):
def __init__(self, pool):
self.dbpool = pool
@classmethod
def from_settings(cls, settings):
"""
这个函数名称是固定的,当爬虫启动的时候,scrapy会自动调用这些函数,加载配置数据。
:param settings:
:return:
"""
params = dict(
host=settings['MYSQL_HOST'],
port=settings['MYSQL_PORT'],
db=settings['MYSQL_DB'],
user=settings['MYSQL_USER'],
passwd=settings['MYSQL_PASSWD'],
charset=settings['MYSQL_CHARSET'],
cursorclass=pymysql.cursors.DictCursor
)
# 创建一个数据库连接池对象,这个连接池中可以包含多个connect连接对象。
# 参数1:操作数据库的包名
# 参数2:链接数据库的参数
db_connect_pool = adbapi.ConnectionPool('pymysql', **params)
# 初始化这个类的对象
obj = cls(db_connect_pool)
return obj
def process_item(self, item, spider):
"""
在连接池中,开始执行数据的多线程写入操作。
:param item:
:param spider:
:return:
"""
# 参数1:在线程中被执行的sql语句
# 参数2:要保存的数据
result = self.dbpool.runInteraction(self.insert, item)
# 给result绑定一个回调函数,用于监听错误信息
result.addErrback(self.error)
def error(self, reason):
print('--------', reason)
# 线面这两步分别是数据库的插入语句,以及执行插入语句。这里把插入的数据和sql语句分开写了,跟何在一起写效果是一样的
def insert(self, cursor, item):
insert_sql = "INSERT INTO bole(bole_title, bole_date, bole_tag, bole_content, bole_dz, bole_sc, bole_pl, bole_img_src) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)"
cursor.execute(insert_sql, (item['bole_title'], item['bole_date'], item['bole_tag'], item['bole_content'], item['bole_dz'], item['bole_sc'], item['bole_pl'], item['bole_img_path']))
# 不需要commit()
4、也就是最后一步了,在settings.py文件里面,先将系统默认的同步写入的方式给注释了,然后再写入自己自定义的异步写入方式,不然pipeline.py文件里面写的异步写入就执行不了了
mysql异步写入数据库_scrapy爬虫框架中数据库(mysql)的异步写入相关推荐
- python框架 mysql数据库_在Python的框架中为MySQL实现restful接口的教程
最近在做游戏服务分层的时候,一直想把mysql的访问独立成一个单独的服务DBGate,原因如下: 请求收拢到DBGate,可以使DBGate变为无状态的,方便横向扩展 当请求量或者存储量变大时,mys ...
- python爬虫抓取分页_Scrapy爬虫框架之Scrapy爬取分页数据(一)
Python应用场景 Scrapy 爬虫框架 课程特色 时间就是生命,浓缩才是精华 (4小时,完成了Scrapy爬虫必备知识点讲解) 课程体系完整 ( 应用场景.Scrapy体系结构.分页爬虫.整站爬 ...
- 关于Scrapy爬虫框架中meta参数的使用示例演示(下)
点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 络纬秋啼金井阑,微霜凄凄簟色寒. ...
- docker容器mysql头文件_在Docker容器中使用MySQL数据库
开发过程中经常需要安装.调试mysql数据库,还需要在各种操作系上安装包依赖,实在是繁琐,因此就研究了一下如何在docker上运行一个mysql镜像,省却了我安装.找依赖的问题. 注:本文所有内容均在 ...
- abp 使用mysql_在Abp框架中使用Mysql数据库的方法以及相关问题小记
最近发现了一款DDD的框架 看起来不错,据说挺流弊的 刚好最近要弄点小东西,拿来试试也不错 苦于穷逼买不起高配服务器,只好装mysql数据库了 下面说下如何在该框架下使用Mysql数据库 打开项目后, ...
- 数据库与身份认证(数据库的基本概念,安装并配置 MySQL,MySQL 的基本使用,在项目中操作 MySQL,前后端的身份认证)
theme: channing-cyan 数据库与身份认证 1. 数据库的基本概念 1.1 什么是数据库 数据库(database)是用来组织.存储和管理数据的仓库. 当今世界是一个充满着数据的互联网 ...
- python scrapy框架爬虫_Scrapy爬虫框架教程(一)-- Scrapy入门
前言 转行做python程序员已经有三个月了,这三个月用Scrapy爬虫框架写了将近两百个爬虫,不能说精通了Scrapy,但是已经对Scrapy有了一定的熟悉.准备写一个系列的Scrapy爬虫教程,一 ...
- ci mysql 转义,CI(CodeIgniter)框架中URL特殊字符处理与SQL注入隐患分析
本文实例分析了CI(CodeIgniter)框架中URL特殊字符处理与SQL注入隐患.分享给大家供大家参考,具体如下: php CI框架中URL特殊字符有很多是不支持的,导致像c++,括号这些常用的分 ...
- echarts导入mysql数据库_Echarts最新:Django中从mysql数据库中获取数据传到echarts方式_爱安网 LoveAn.com...
关于"Echarts"的最新内容 聚合阅读 这篇文章主要介绍了基于vue+echarts 数据可视化大屏展示的方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随 ...
最新文章
- Citrix通用打印服务器配置
- 知识蒸馏在推荐系统的应用
- Oracle exp/imp,备份或导入时注意的事项
- poj2976 Dropping tests(01分数规划 好题)
- 学会了很多计算机小技巧,超实用的八个电脑小技巧,全都学会让你成为电脑高手...
- 格式化数字字符串输出的一个小技巧
- 23岁女子搬家途中跳车身亡!货拉拉官方回应......
- 项目解析jsx文件_神奇了!这个 Go 语言项目让前端构建快了近 100 倍
- Android 代码管理技巧
- 行测题相关,在线测评(图形找规律。逻辑思维)
- Tera Term宏语言介绍
- python提升算法3_XGBOOST_docs_Scikit-LearnAPI_XGBClassifier_train参数01
- 让Siri当你的管家,用iPhone玩转小米智能家居
- 无法打开登录所请求的数据库 。登录失败。用户*登录失败。解决办法
- 使用sqlhelper类查询时假如不需要参数化,那到时SqlParameter这个传参怎么处理
- matlab修复模糊图片论文,图像算法论文,关于运动模糊图像复原算法相关参考文献资料-免费论文范文...
- linux上配置zabbix并设置企业微信,机器人以及自主告警
- python和verilog对接_用这个库居然可以使用Python进行FPGA逻辑开发
- 数据库的入门简单了解
- Java 方法引用之super引用父类方法案例
热门文章
- ant-design-vue自定义使用阿里iconfont图标
- javascript正则替换换行符“↵“
- 超详细步骤,教你一次就成功注册Gmail邮箱(同时可以用于申请谷歌广告账户)
- 采用龙贝格观测器进行无传感器控制模型
- 多个子路由器和主路由器怎么设置在同一个网段(变身无线交换机)
- 根据两个点的坐标计算第一个点到第二个点的角度
- 通付盾 | 成功入选2023年苏州市市级打造先进制造业基地专项资金—产业链关键核心技术攻关项目
- [转]IA64与X86-64的区别
- selenium 遇到的奇葩问题
- 微信分享接口图片显示不出来,只有自己能看的到