####数据库的异步写入

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)的异步写入相关推荐

  1. python框架 mysql数据库_在Python的框架中为MySQL实现restful接口的教程

    最近在做游戏服务分层的时候,一直想把mysql的访问独立成一个单独的服务DBGate,原因如下: 请求收拢到DBGate,可以使DBGate变为无状态的,方便横向扩展 当请求量或者存储量变大时,mys ...

  2. python爬虫抓取分页_Scrapy爬虫框架之Scrapy爬取分页数据(一)

    Python应用场景 Scrapy 爬虫框架 课程特色 时间就是生命,浓缩才是精华 (4小时,完成了Scrapy爬虫必备知识点讲解) 课程体系完整 ( 应用场景.Scrapy体系结构.分页爬虫.整站爬 ...

  3. 关于Scrapy爬虫框架中meta参数的使用示例演示(下)

    点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 络纬秋啼金井阑,微霜凄凄簟色寒. ...

  4. docker容器mysql头文件_在Docker容器中使用MySQL数据库

    开发过程中经常需要安装.调试mysql数据库,还需要在各种操作系上安装包依赖,实在是繁琐,因此就研究了一下如何在docker上运行一个mysql镜像,省却了我安装.找依赖的问题. 注:本文所有内容均在 ...

  5. abp 使用mysql_在Abp框架中使用Mysql数据库的方法以及相关问题小记

    最近发现了一款DDD的框架 看起来不错,据说挺流弊的 刚好最近要弄点小东西,拿来试试也不错 苦于穷逼买不起高配服务器,只好装mysql数据库了 下面说下如何在该框架下使用Mysql数据库 打开项目后, ...

  6. 数据库与身份认证(数据库的基本概念,安装并配置 MySQL,MySQL 的基本使用,在项目中操作 MySQL,前后端的身份认证)

    theme: channing-cyan 数据库与身份认证 1. 数据库的基本概念 1.1 什么是数据库 数据库(database)是用来组织.存储和管理数据的仓库. 当今世界是一个充满着数据的互联网 ...

  7. python scrapy框架爬虫_Scrapy爬虫框架教程(一)-- Scrapy入门

    前言 转行做python程序员已经有三个月了,这三个月用Scrapy爬虫框架写了将近两百个爬虫,不能说精通了Scrapy,但是已经对Scrapy有了一定的熟悉.准备写一个系列的Scrapy爬虫教程,一 ...

  8. ci mysql 转义,CI(CodeIgniter)框架中URL特殊字符处理与SQL注入隐患分析

    本文实例分析了CI(CodeIgniter)框架中URL特殊字符处理与SQL注入隐患.分享给大家供大家参考,具体如下: php CI框架中URL特殊字符有很多是不支持的,导致像c++,括号这些常用的分 ...

  9. echarts导入mysql数据库_Echarts最新:Django中从mysql数据库中获取数据传到echarts方式_爱安网 LoveAn.com...

    关于"Echarts"的最新内容 聚合阅读 这篇文章主要介绍了基于vue+echarts 数据可视化大屏展示的方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随 ...

最新文章

  1. Citrix通用打印服务器配置
  2. 知识蒸馏在推荐系统的应用
  3. Oracle exp/imp,备份或导入时注意的事项
  4. poj2976 Dropping tests(01分数规划 好题)
  5. 学会了很多计算机小技巧,超实用的八个电脑小技巧,全都学会让你成为电脑高手...
  6. 格式化数字字符串输出的一个小技巧
  7. 23岁女子搬家途中跳车身亡!货拉拉官方回应......
  8. 项目解析jsx文件_神奇了!这个 Go 语言项目让前端构建快了近 100 倍
  9. Android 代码管理技巧
  10. 行测题相关,在线测评(图形找规律。逻辑思维)
  11. Tera Term宏语言介绍
  12. python提升算法3_XGBOOST_docs_Scikit-LearnAPI_XGBClassifier_train参数01
  13. 让Siri当你的管家,用iPhone玩转小米智能家居
  14. 无法打开登录所请求的数据库 。登录失败。用户*登录失败。解决办法
  15. 使用sqlhelper类查询时假如不需要参数化,那到时SqlParameter这个传参怎么处理
  16. matlab修复模糊图片论文,图像算法论文,关于运动模糊图像复原算法相关参考文献资料-免费论文范文...
  17. linux上配置zabbix并设置企业微信,机器人以及自主告警
  18. python和verilog对接_用这个库居然可以使用Python进行FPGA逻辑开发
  19. 数据库的入门简单了解
  20. Java 方法引用之super引用父类方法案例

热门文章

  1. ant-design-vue自定义使用阿里iconfont图标
  2. javascript正则替换换行符“↵“
  3. 超详细步骤,教你一次就成功注册Gmail邮箱(同时可以用于申请谷歌广告账户)
  4. 采用龙贝格观测器进行无传感器控制模型
  5. 多个子路由器和主路由器怎么设置在同一个网段(变身无线交换机)
  6. 根据两个点的坐标计算第一个点到第二个点的角度
  7. 通付盾 | 成功入选2023年苏州市市级打造先进制造业基地专项资金—产业链关键核心技术攻关项目
  8. [转]IA64与X86-64的区别
  9. selenium 遇到的奇葩问题
  10. 微信分享接口图片显示不出来,只有自己能看的到