Pandas操作MySQL的方法详解

 更新时间:2022年08月23日 09:29:47   作者:尤而小屋  
这篇文章主要介绍了如何使用Pandas来操作MySQL数据库。主要是包含查询MySQL中的数据,以及如何往数据库中写入数据,感兴趣的小伙伴可以了解一下

本文介绍的是如何使用Pandas来操作MySQL数据库。主要是包含查询MySQL中的数据,以及如何往数据库中写入数据。

先安装两个库:

  • pymysql
  • sqlalchemy
pip install pymysql
pip install sqlalchemy

本地数据库

查看一个本地数据库中某个表的数据。这份数据是《MySQL经典50题》的一个表之一:

部分习题答案:

mysql -u root -p   -- 安装mysql,进入数据库输入暗文密码

show databases;  -- 显示全部数据库
use test;  -- 使用某个数据库
show tables;  -- 查看数据库下的全部表
select * from Student;  -- 查看某个表的全部内容

操作MySQL

连接MySQL

以pymysql模块为例,讲解如何连接数据库。

In [1]:

import pandas as pd

import pymysql
from sqlalchemy import create_engine

In [2]:

connection = pymysql.connect(
  host='127.0.0.1',  # 本机ip地址
  port=3306,  # mysql默认端口号
  user="root",  # 用户名
  password="password",  # 密码
  charset="utf8", # 字符集
  db="test"  # 数据库
)

cur = connection.cursor() # 建立游标
cur

Out[2]:

<pymysql.cursors.Cursor at 0x11ddc1190>

connect()方法常用的参数:

connect() 常用参数说明
host主机ip
user用户名
password密码
database数据库
port端口号
charset字符集

调用 cursor() 方法即可返回一个新的游标对象,在连接没有关闭之前,游标对象可以反复使用

执行sql查询语句

In [3]:

sql="""  # 待执行的sql语句
select * from Student;
"""

# 执行sql语句
cur.execute(sql)  

Out[3]:

8

In [4]:

cur

结果表明是个游标对象:

Out[4]:

<pymysql.cursors.Cursor at 0x11ddc1190>

In [5]:

cur.description

主要返回游标的属性信息,官网的描述为:

Out[5]:

(('s_id', 253, None, 20, 20, 0, False),
 ('s_name', 253, None, 20, 20, 0, True),
 ('s_birth', 253, None, 20, 20, 0, True),
 ('s_sex', 253, None, 20, 20, 0, True))

In [6]:

# 列名
columns = [col[0] for col in  cur.description]
columns

Out[6]:

['s_id', 's_name', 's_birth', 's_sex']

游标使用

下图显示的是如何取出一条或者多条数据(按照顺序查询)

通过游标获取全部的数据:

fetch相关的函数都是获取结果集中剩下的数据,多次调用的时候只会从剩余数据中查询:

当第二次调用的时候结果就是空集。

通过游标获取查询的结果集的特点:

1.可以获取1条、多条和全部数据

2.在获取数据的时候是按照顺序读取的

3.fetchall函数返回剩下的所有行

  • 如果是末尾,则返回空元组;
  • 否则返回一个元组,其元素是每一行的记录封装的一个元组

转成DataFrame

# 列名
columns = [col[0] for col in  cur.description]

# 数据集合
data = []
for i in cur.fetchall():
    data.append(i)
    
df = pd.DataFrame(data,columns=columns)

保存成CSV数据

SQL插入数据

往MySQL数据库中插入数据:

import pandas as pd

import pymysql
from sqlalchemy import create_engine

connection = pymysql.connect(
  host='127.0.0.1',  # 本机ip地址
  port=3306,  # mysql默认端口号
  user="root",  # 用户名
  password="11112222",  # 密码
  charset="utf8", # 字符集
  db="test"  # 数据库
)

cur = connection.cursor() # 建立游标

# 待执行SQL语句
sql="""  
insert into test.Student(s_id, s_name, s_birth, s_sex) values("09","吴越","1998-08-08","男")
"""

# 执行sql语句
cur.execute(sql)  

很关键一步,要记得提交,这样最终才会写入数据库:

connection.commit()

执行SQL删除语句

使用完之后记得关闭连接:

connection.close()

使用sqlalchemy

第二种常用的方法是通过sqlalchemy来连接数据库:

连接数据库

import pandas as pd
from sqlalchemy import create_engine

# 依次填写MySQL的用户名、密码、IP地址、端口、数据库名
# create_engine("数据库类型+数据库驱动://数据库用户名:数据库密码@IP地址:端口/数据库",其他参数)
engine = create_engine("mysql+pymysql://root:password@localhost:3306/test")

查询语句1

查询语句2

写入数据

Pandas中的DataFrame写入新的表testdf中:

show tables;

使用read_sql读取

使用Pandas自带的read_sql函数能够自行读取数据,读取上面创建的数据.

官网:https://pandas.pydata.org/docs/reference/api/pandas.read_sql.html

import pandas as pd
from sqlalchemy import create_engine

# 依次填写MySQL的用户名、密码、IP地址、端口、数据库名
engine = create_engine("mysql+pymysql://root:password@localhost:3306/test")
# sql语句
sql4 = "select * from testdf;"
df4 = pd.read_sql(sql4, engine)

到此这篇关于Pandas操作MySQL的方法详解的文章就介绍到这了,更多相关Pandas操作MySQL内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python 办公自动化——基于pyqt5和openpyxl统计符合要求的名单

    python 办公自动化——基于pyqt5和openpyxl统计符合要求的名单

    前几天接到的一个需求,因为学校给的名单是青年大学习已学习的名单,然而要知道未学习的名单只能从所有团员中再排查一次,过程相当麻烦。刚好我也学过一些操作办公软件的基础,再加上最近在学pyqt5,所以我决定用python写个自动操作文件的脚本给她用用。
    2021-05-05
  • Python绘制直方图的示例代码

    Python绘制直方图的示例代码

    本文主要介绍了如何使用Python绘制直方图,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • Python实现简单的获取图片爬虫功能示例

    Python实现简单的获取图片爬虫功能示例

    这篇文章主要介绍了Python实现简单的获取图片爬虫功能,涉及Python使用urllib模块及正则模块操作页面元素获取图片的相关技巧,需要的朋友可以参考下
    2017-07-07
  • 深入理解Django的信号机制

    深入理解Django的信号机制

    本文主要介绍了深入理解Django的信号机制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • 手动实现把python项目发布为exe可执行程序过程分享

    手动实现把python项目发布为exe可执行程序过程分享

    这篇文章主要介绍了手动实现把python项目发布为exe可执行程序过程分享,本文使用C语言实现了一个简洁的Python打包程序,需要的朋友可以参考下
    2014-10-10
  • python tkinter实现彩球碰撞屏保

    python tkinter实现彩球碰撞屏保

    这篇文章主要为大家详细介绍了python tkinter实现彩球碰撞屏保,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-07-07
  • 计算机二级python学习教程(3) python语言基本数据类型

    计算机二级python学习教程(3) python语言基本数据类型

    这篇文章主要为大家详细介绍了计算机二级python学习教程的第3篇,python语言基本数据类型,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-05-05
  • python SOCKET编程基础入门

    python SOCKET编程基础入门

    这篇文章主要介绍了python SOCKET编程基础入门的相关资料,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下
    2021-02-02
  • Python实现按逗号分隔列表的方法

    Python实现按逗号分隔列表的方法

    今天小编就为大家分享一篇Python实现按逗号分隔列表的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-10-10
  • Python基础教程之Pandas数据分析库详解

    Python基础教程之Pandas数据分析库详解

    Pandas是一个基于 NumPy 的非常强大的开源数据处理库,它提供了高效、灵活和丰富的数据结构和数据分析工具,本文中,我们将学习如何使用Pandas来处理和分析数据,感兴趣的小伙伴跟着小编一起来看看吧
    2023-07-07

最新评论