Pandas操作MySQL数据库
本文介绍的是如何使用Pandas来操作MySQL数据库。
- pymysql
- sqlalchemy
先安装两个库:
1 | pip install pymysql |
本地数据库
查看一个本地数据库中某个表的数据。这份数据是《MySQL经典50题》的一个表之一:
1 | mysql -u root -p -- 安装mysql,进入数据库输入暗文密码 |
操作MySQL
连接MySQL
以pymysql模块为例,讲解如何连接数据库。
In [1]:
1 | import pandas as pd |
In [2]:
1 | connection = pymysql.connect( |
Out[2]:
1 | <pymysql.cursors.Cursor at 0x11ddc1190> |
connect()方法常用的参数:
connect() 常用参数 | 说明 |
---|---|
host | 主机ip |
user | 用户名 |
password | 密码 |
database | 数据库 |
port | 端口号 |
charset | 字符集 |
调用 cursor() 方法即可返回一个新的游标对象,在连接没有关闭之前,游标对象可以反复使用
执行sql查询语句
In [3]:
1 | sql=""" # 待执行的sql语句 |
Out[3]:
1 | 8 |
In [4]:
1 | cur |
结果表明是个游标对象:
Out[4]:
1 | <pymysql.cursors.Cursor at 0x11ddc1190> |
In [5]:
1 | cur.description |
主要返回游标的属性信息,官网的描述为:
Out[5]:
1 | (('s_id', 253, None, 20, 20, 0, False), |
In [6]:
1 | # 列名 |
Out[6]:
1 | ['s_id', 's_name', 's_birth', 's_sex'] |
游标使用
下图显示的是如何取出一条或者多条数据(按照顺序查询)
通过游标获取全部的数据:
fetch相关的函数都是获取结果集中剩下的数据,多次调用的时候只会从剩余数据中查询:
当第二次调用的时候结果就是空集。
通过游标获取查询的结果集的特点:
- 可以获取1条、多条和全部数据
- 在获取数据的时候是按照顺序读取的
- fetchall函数返回剩下的所有行
- 如果是末尾,则返回空元组;
- 否则返回一个元组,其元素是每一行的记录封装的一个元组
转成DataFrame
1 | # 列名 |
保存成CSV数据
SQL插入数据
往MySQL数据库中插入数据:
1 | import pandas as pd |
很关键一步,要记得提交,这样最终才会写入数据库:
1 | connection.commit() |
执行SQL删除语句
使用完之后记得关闭连接:
1 | connection.close() |
使用sqlalchemy
第二种常用的方法是通过sqlalchemy来连接数据库:
连接数据库
1 | import pandas as pd |
查询语句1
查询语句2
写入数据
将Pandas
中的DataFrame
写入新的表testdf
中:
1 | show tables; |
使用read_sql读取
使用Pandas自带的read_sql函数能够自行读取数据,读取上面创建的数据:
1 | import pandas as pd |