mysql爬虫_爬虫Day7-Mysql的那些事

前言:

爬虫爬取到的数据最终是要保存下来滴~ 别以为爬下来就完事了,具体流程还有数据去重,数据分析,最后数据可视化等等操作呢… 这一章节,我们聊聊 “数据存储”

在 Python2 中,连接 MySQL 的库大多是使用 MySQLDB,但是此库官方并不支持 Python3,所以在这里推荐使用的库是 PyMySQL。

环境准备:安装好PyMysql库(pip install PyMysql)

本地mysql环境的部署(我的端口是默认的3306)

PyMysql使用介绍:

获取连接对象

我们要连接到 mysql 这个库,首先应该获取一个connect 对象(输入本地部署的Mysql参数)0ad32803f54d0492199b0f5671fb7fc6.png

获取操作游标

紧接着,需要实例化一个操作游标对象。920065ad6599a58a8ea99c61a7513c98.pngcursor 则为mysql 里面的 操作游标,这个概念和光标有些类似。语句的执行操作,都是依靠操作游标的。

我们拿到操作游标后,就很容易了。因为python执行的 sql 语句跟 mysql 里面是一样的…但还是有一丢丢不同的,让我们接着往下看。

插入数据4f5f6ab43586af8f15c3a6fb66b9965d.png注意我们这里使用了异常处理,因为在PyMysql 里面是采用事务这个概念进行操作的

插入数据需要使用 commit 进行数据提交;当捕捉到错误时,db对象进行 rollback 事件回滚(只针对插入、更新、删除这些对数据库进行更改的操作,事件回滚就是:要么执行成功,要么不执行)

还有一点要注意的是:里面的参数,不管什么类型,统一使用%s作为占位符

动态插入数据:

有时候我们面临的实际情况,你不知道有多少字段插入(上面的情况是我们”写死“的),可以说,插入的字段是不确定因素的,我们应该学会根据实际情况去构造 sql 语句。

在很多情况下,我们要达到的效果是插入方法无需改动,做成一个通用方法,只需要传入一个动态变化的字典给就好了。比如我们构造这样一个字典:f1ee86c3607f65f4256324d484583926.png上面这条执行语句, 就替代之前那条 很 low 的写法,这么一来,无论字典有多少个键值对,我们都能进行插入。

数据查询:

是的,对于数据库的增删改查,什么最重要? (大声告诉我!)—— 没错! 就是查询!!

旁白君吐槽:“自嗨型作者…”

于是,旁白君大手一挥,说:“这个还不简单,我最拿手了。”于是抢走了作者的键盘,刷刷的写下这么一串代码de6b17898709a2a1ff3872c3004a4b6b.png

但是,结果却是这样的…c6fbd1b6d45ad64ceab9d3a45f124a59.png

what? 这是什么鬼东西,我的数据呢??

作者邪魅一笑,眼中三分不屑三分冷漠四分讥笑,慢吞吞的拿走旁白君的键盘,自信的啪啪啪添加上了这么几条代码:a069d316411d1cc80c7aeeb8b3f3805f.png

看到输出的结果,作者在旁白君羡慕的眼神中满意的点了点头fa0459a89f3c901576c5c32ed70c6c65.png

旁白君对着图仔细看了看说:“刚好四条!原来我刚才输出的4是执行成功的条目数!”

“没错,悟性还挺高!” 作者留下潇洒离去的背影,并甩给旁白君一本秘籍——“数据查询的方法”

数据查询的方法:使用select语句查询后不会直接返回查询的具体数据,而是返回执行成功的条目数,我们需要使用fetchone或者fetchall方法可以将数据读取出来。

fetchone() 方法,这个方法可以获取结果的第一条数据,返回结果是元组形式,元组的元素顺序跟字段一一对应,也就是第一个元素就是第一个字段 id,第二个元素就是第二个字段 name,以此类推。

fetchall() 方法,它可以得到结果的所有数据,然后将其结果和类型打印出来,它是二重元组,每个元素都是一条记录。我们将其遍历输出,将其逐个输出出来。

我们还可以用 while 循环加 fetchone() 的方法来获取所有数据,而不是用 fetchall() 全部一起获取出来,fetchall() 会将结果以元组形式全部返回,如果数据量很大,那么占用的开销会非常高。所以推荐使用如下的方法来逐条取数据901a1ebdda279934e900d76e07d0b789.png

总结

这一篇主要是理解如何连接数据库、事务的概念(默认开启事务),以及使用对数据库对字典形式的数据进行操作。然后 使用sql语句进行增删改查(主要是动态数据、插入更新数据部分)

在这一期皮了一下,希望大家喜欢,啊哈哈。

各位,我们下期再见!89b8a6bad773e55bef6c38db37936fb7.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值