小帅b说过

在这几篇中会着重说说将爬取下来的数据进行存储

上次我们说了一种 csv 的存储方式

这次主要来说说怎么将爬取下来的数据保存到 MySQL 数据库

接下来就是

学习python的正确姿势

真香假设

本文假设你已经安装好MySQL

并且懂了一些 MySQL 的使用

例如简单“增删改查”的语句

如果你还没安装 MySQL

可以到以下链接去安装一下

https://www.mysql.com/downloads/

在你的 MySQL 中创建一个数据库吧

就叫...

AV-Idol

用 root 的身份进入你的 MySQL

sudo mysql -u root -p

输入 MySQL 的用户名密码之后

就可以开始操作 MySQL 啦

我们来创建一个数据库

如果 avIdol 这个数据库不存在于我们的 MySQL 里面

那就创建一个出来

mysql> create database if not exists avIdol;Query OK, 1 row affected (0.01 sec)

这样

我们就创建出一个数据库了

接下来

我们就使用 python 来操作这个数据库吧

我们需要使用到 pymysql 这个库

专门用来操作 MySQL 的

可以用 pip 安装一下

 pip install pymysql

接下来我们就连接到我们刚刚创建的数据库

然后在这个数据库里面创建一张 beautyGirls 表

专门用来存放漂亮美眉的信息

import pymysql
# 使用 connect 方法,传入数据库地址,账号密码,数据库名就可以得到你的数据库对象db = pymysql.connect("你的数据库地址", "数据库账号", "数据库密码", "avIdol")
# 接着我们获取 cursor 来操作我们的 avIdol 这个数据库cursor = db.cursor()
# 比如我们来创建一张数据表sql = """create table beautyGirls ( name char(20) not null, age int)"""cursor.execute(sql)
# 最后我们关闭这个数据库的连接db.close()

运行一下

没报什么错就说明我们成功创建数据表了

我们回到数据库看下是否创建成功

通过 show tables

可以看到我们数据库成功创建了 beautyGirls 这张婊,哦不,表

通过 show full columns from beautyGirls;

可以看到我们在这张表中创建了 name 和 age 这两个字段

有了数据库和数据表了

那么接下来我们就往数据库插入数据看看

import pymysql
# 使用 connect 方法,传入数据库地址,账号密码,数据库名就可以得到你的数据库对象db = pymysql.connect("localhost", "root", "root", "avIdol")
# 接着我们获取 cursor 来操作我们的 avIdol 这个数据库cursor = db.cursor()
# 插入一条记录sql = "insert into beautyGirls(name, age) values ('Mrs.cang', 18)"
try: cursor.execute(sql) db.commit()except: # 回滚 db.rollback()
# 最后我们关闭这个数据库的连接db.close()

再来数据库查询一下这张表

可以看到

苍老师的数据就被我们插进来了

当你使用 pymysql 对数据进行更新的时候

记得调用

db.commit()

这样才会执行到哦

知道如何创建数据表、插入数据

那么对于更新数据以及删除数据

也是同样的道理

只是 sql 语句不同而已

比如删除 18 岁的苍老师

sql = "delete from beautyGirls where age = '%d'" % (18)try:   cursor.execute(sql)   db.commit()except:   db.rollback()

可能你在操作数据库的时候

做一些数据的更新或者添加

有些数据在添加过程可能出现异常

为了让我们的数据能够完全的添加

可以使用

db.rollback()

回滚操作

这样才能让我们的事务具有一致性

当然

我们也可以将 csv 中的内容插入到 MySQL 中

就拿上次我们生成的 xsb.csv 文件来说

我们把这里面的内容插到 xsb 数据库吧

还是一样,我们来创建一个叫做 xsb 的数据库

并且把字符集设置为 UFT-8 ,防止中文乱码

mysql> CREATE DATABASE xsb CHARACTER SET utf8 COLLATE utf8_general_ci;

接着创张帅b表

mysql> CREATE TABLE xsb (name char(20), age char(20), length char(20));Query OK, 0 rows affected (0.34 sec)

回到代码来

这次我们安装一下 mysql 的 python 客户端

pip install mysqlclient 

使用 sqlalchemy 来连接我们的数据库

然后就可以使用代码将 csv 文件的内容插到 xsb 这张表了

import pandas as pdfrom sqlalchemy import create_engine
df = pd.read_csv('xsb.csv')
# 当engine连接的时候我们就插入数据engine = create_engine('mysql://root@localhost/xsb?charset=utf8')with engine.connect() as conn, conn.begin(): df.to_sql('xsb', conn, if_exists='replace')

运行一下

然后打开我们刚刚创建的 xsb 数据库查询一下

可以看到

我们就将 csv 中的内容插入到数据库啦

ok

以上就是使用 python 操作数据库的具体操作

以后小帅b在爬虫项目例子中还会提及 MySQL

那么

我们下回见

peace

python爬虫26 | 把数据爬取下来之后就存储到你的MySQL数据库。的更多相关文章

  1. Python爬虫:为什么你爬取不到网页数据

    前言: 之前小编写了一篇关于爬虫为什么爬取不到数据文章(文章链接为:Python爬虫经常爬不到数据,或许你可以看一下小编的这篇文章), 但是当时小编也是胡乱编写的,其实里面有很多问题的,现在小编重新发 ...

  2. Python爬虫实战二之爬取百度贴吧帖子

    大家好,上次我们实验了爬取了糗事百科的段子,那么这次我们来尝试一下爬取百度贴吧的帖子.与上一篇不同的是,这次我们需要用到文件的相关操作. 前言 亲爱的们,教程比较旧了,百度贴吧页面可能改版,可能代码不 ...

  3. Python爬虫实战一之爬取糗事百科段子

    大家好,前面入门已经说了那么多基础知识了,下面我们做几个实战项目来挑战一下吧.那么这次为大家带来,Python爬取糗事百科的小段子的例子. 首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把 ...

  4. 转 Python爬虫实战二之爬取百度贴吧帖子

    静觅 » Python爬虫实战二之爬取百度贴吧帖子 大家好,上次我们实验了爬取了糗事百科的段子,那么这次我们来尝试一下爬取百度贴吧的帖子.与上一篇不同的是,这次我们需要用到文件的相关操作. 本篇目标 ...

  5. python爬虫学习01--电子书爬取

    python爬虫学习01--电子书爬取 1.获取网页信息 import requests #导入requests库 ''' 获取网页信息 ''' if __name__ == '__main__': ...

  6. python爬虫:了解JS加密爬取网易云音乐

    python爬虫:了解JS加密爬取网易云音乐 前言 大家好,我是"持之以恒_liu",之所以起这个名字,就是希望我自己无论做什么事,只要一开始选择了,那么就要坚持到底,不管结果如何 ...

  7. 转 Python爬虫实战一之爬取糗事百科段子

    静觅 » Python爬虫实战一之爬取糗事百科段子 首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把,这次我们尝试一下用爬虫把他们抓取下来. 友情提示 糗事百科在前一段时间进行了改版,导致 ...

  8. Python爬虫入门教程 42-100 爬取儿歌多多APP数据-手机APP爬虫部分

    1. 儿歌多多APP简单分析 今天是手机APP数据爬取的第一篇案例博客,我找到了一个儿歌多多APP,没有加固,没有加壳,没有加密参数,对新手来说,比较友好,咱就拿它练练手,熟悉一下Fiddler和夜神 ...

  9. python实现人人网用户数据爬取及简单分析

    这是之前做的一个小项目.这几天刚好整理了一些相关资料,顺便就在这里做一个梳理啦~ 简单来说这个项目实现了,登录人人网并爬取用户数据.并对用户数据进行分析挖掘,终于效果例如以下:1.存储人人网用户数据( ...

随机推荐

  1. hdoj--1877--又一版 A+B(水题)

     又一版 A+B Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  2. luogu 3865 【模板】ST表

    我太菜了 今天才学会现场脑补ST表静态RMQ #include<iostream> #include<cstdio> #include<algorithm> #in ...

  3. 假如Java对象是个人······

    假如Java对象是个人,那意味着它也具备了我们人所有的东西,头,身体,大长腿. 头 头就是我们的对象头(Header).根据JAVA虚拟机规范,我们的对象头分为两部分,分别是存储对象自身的运行时数据和 ...

  4. linux shell 实例1

    UI项目删除“UIL”文件中的无用字串: 脚本需要制定UIL文件目录位置&无用字串的txt文件,如删除海尔目录下的无用字串: ./delete_uil_string.sh ./haier/UI ...

  5. 【161】BASH相关文章链接

    ---恢复内容开始--- 1. Linux cat命令详解  --<cat>-- 新建文件 file1.txt,随便输入几行文字 cat 'file1.txt' #显示 'file1.tx ...

  6. 关于Java泛型的?和 T 的区别

    java中的?号指未知的类型:而T指具体类型 泛型问号(?)未知的类型就是可以指定当前问号(?)所代表的类,可以指定上限(extends)和下限(super) 泛型T指已经具体知道了类型,就是不能指定 ...

  7. bzoj 1652: [Usaco2006 Feb]Treats for the Cows【区间dp】

    裸的区间dp,设f[i][j]为区间(i,j)的答案,转移是f[i][j]=max(f[i+1][j]+a[i](n-j+i),f[i][j-1]+a[j]*(n-j+i)); #include< ...

  8. bzoj 2199: [Usaco2011 Jan]奶牛议会【2-SAT】

    好久没写2-SAT了啊,还以为是网络流 设点x为选,x'为不选,因为一头牛至少要满足一个条件,所以对于牛条件的两个点,选了一个不符合的点,就要选另一个符合的点,这样连两条边 然后枚举所有议案的选和不选 ...

  9. 乐字节Java8核心特性之方法引用

    大家好,我是乐字节的小乐,上一次我们说到了Java8核心特性之函数式接口,接下来我们继续了解Java8又一核心特性--方法引用. Java8 中引入方法引用新特性,用于简化应用对象方法的调用, 方法引 ...

  10. knockout jquery警告删除

    //触发删除的动作                $("a.delete").live('click', function () {                    var ...