python爬虫26 | 把数据爬取下来之后就存储到你的MySQL数据库。

小帅b说过

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

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

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

接下来就是

学习python的正确姿势

python爬虫26 | 把数据爬取下来之后就存储到你的MySQL数据库。

真香假设

本文假设你已经安装好MySQL

并且懂了一些 MySQL 的使用

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

如果你还没安装 MySQL

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

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

python爬虫26 | 把数据爬取下来之后就存储到你的MySQL数据库。

在你的 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爬虫26 | 把数据爬取下来之后就存储到你的MySQL数据库。

接下来

我们就使用 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()

运行一下

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

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

python爬虫26 | 把数据爬取下来之后就存储到你的MySQL数据库。

通过 show tables

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

 

通过 show full columns from beautyGirls;

 

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

 

python爬虫26 | 把数据爬取下来之后就存储到你的MySQL数据库。

 

有了数据库和数据表了

 

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

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()

 

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

python爬虫26 | 把数据爬取下来之后就存储到你的MySQL数据库。

可以看到

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

python爬虫26 | 把数据爬取下来之后就存储到你的MySQL数据库。

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

记得调用

db.commit()

这样才会执行到哦

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

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

也是同样的道理

只是 sql 语句不同而已

比如删除 18 岁的苍老师

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

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

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

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

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

可以使用

db.rollback()

回滚操作

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

python爬虫26 | 把数据爬取下来之后就存储到你的MySQL数据库。

当然

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

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

python爬虫26 | 把数据爬取下来之后就存储到你的MySQL数据库。

我们把这里面的内容插到 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 pd
from 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 数据库查询一下

python爬虫26 | 把数据爬取下来之后就存储到你的MySQL数据库。

可以看到

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

python爬虫26 | 把数据爬取下来之后就存储到你的MySQL数据库。

ok

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

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

那么

我们下回见

peace

python爬虫26 | 把数据爬取下来之后就存储到你的MySQL数据库。

原文始发于微信公众号(学习python的正确姿势):python爬虫26 | 把数据爬取下来之后就存储到你的MySQL数据库。

2 Replies to “python爬虫26 | 把数据爬取下来之后就存储到你的MySQL数据库。”

  1. db = pymysql.connect(“D:\mysql-8.0.11-winx64\Data”, “root@localhost”,
    “laizhuyuan1,”, “avIdol”)

    小帅b 这个语句
    报错这个是什么原因呢 TypeError: __init__() takes 1 positional argument but 5 were given

    1. 小帅b说道:

      你这个是因为参数没传对,最好把把参数名称加上,比如user=””,host=”…

发表回复