开发者社区> jclian91> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Python之使用Pandas库实现MySQL数据库的读写

简介:   本次分享将介绍如何在Python中使用Pandas库实现MySQL数据库的读写。首先我们需要了解点ORM方面的知识。 ORM技术   对象关系映射技术,即ORM(Object-Relational Mapping)技术,指的是把关系数据库的表结构映射到对象上,通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。
+关注继续查看

  本次分享将介绍如何在Python中使用Pandas库实现MySQL数据库的读写。首先我们需要了解点ORM方面的知识。

ORM技术

  对象关系映射技术,即ORM(Object-Relational Mapping)技术,指的是把关系数据库的表结构映射到对象上,通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。
  在Python中,最有名的ORM框架是SQLAlchemy。Java中典型的ORM中间件有:Hibernate,ibatis,speedframework。

SQLAlchemy

  SQLAlchemy是Python编程语言下的一款开源软件。提供了SQL工具包及对象关系映射(ORM)工具,使用MIT许可证发行。
  可以使用pip命令安装SQLAlchemy模块:

pip install sqlalchemy

  SQLAlchemy模块提供了create_engine()函数用来初始化数据库连接,SQLAlchemy用一个字符串表示连接信息:

‘数据库类型+数据库驱动名称://用户名:口令@机器地址:端口号/数据库名’

Pandas读写MySQL数据库

  我们需要以下三个库来实现Pandas读写MySQL数据库:

  • pandas
  • sqlalchemy
  • pymysql

其中,pandas模块提供了read_sql_query()函数实现了对数据库的查询,to_sql()函数实现了对数据库的写入,并不需要实现新建MySQL数据表。sqlalchemy模块实现了与不同数据库的连接,而pymysql模块则使得Python能够操作MySQL数据库。
  我们将使用MySQL数据库中的mydb数据库以及employee表,内容如下:


mydb数据库以及employee表

  下面将介绍一个简单的例子来展示如何在pandas中实现对MySQL数据库的读写:

# -*- coding: utf-8 -*-

# 导入必要模块
import pandas as pd
from sqlalchemy import create_engine

# 初始化数据库连接,使用pymysql模块
# MySQL的用户:root, 密码:147369, 端口:3306,数据库:mydb
engine = create_engine('mysql+pymysql://root:147369@localhost:3306/mydb')

# 查询语句,选出employee表中的所有数据
sql = '''
      select * from employee;
      '''

# read_sql_query的两个参数: sql语句, 数据库连接
df = pd.read_sql_query(sql, engine)

# 输出employee表的查询结果
print(df)

# 新建pandas中的DataFrame, 只有id,num两列
df = pd.DataFrame({'id':[1,2,3,4],'num':[12,34,56,89]})

# 将新建的DataFrame储存为MySQL中的数据表,不储存index列
df.to_sql('mydf', engine, index= False)

print('Read from and write to Mysql table successfully!')

  程序的运行结果如下:


程序的运行结果

  在MySQL中查看mydf表格:

mydf表格

这说明我们确实将pandas中新建的DataFrame写入到了MySQL中!

将CSV文件写入到MySQL中

  以上的例子实现了使用Pandas库实现MySQL数据库的读写,我们将再介绍一个实例:将CSV文件写入到MySQL中,示例的mpg.CSV文件前10行如下:


mpg.CSV文件前10行

示例的Python代码如下:

# -*- coding: utf-8 -*-

# 导入必要模块
import pandas as pd
from sqlalchemy import create_engine

# 初始化数据库连接,使用pymysql模块
engine = create_engine('mysql+pymysql://root:147369@localhost:3306/mydb')

# 读取本地CSV文件
df = pd.read_csv("E://mpg.csv", sep=',')

# 将新建的DataFrame储存为MySQL中的数据表,不储存index列
df.to_sql('mpg', engine, index= False)

print("Write to MySQL successfully!")

  在MySQL中查看mpg表格:


MySQL中的mpg表格

仅仅5句Python代码就实现了将CSV文件写入到MySQL中,这无疑是简单、方便、迅速、高效的!

总结

  本文主要介绍了ORM技术以及SQLAlchemy模块,并且展示了两个Python程序的实例,介绍了如何使用Pandas库实现MySQL数据库的读写。程序本身并不难,关键在于多多练习。
  本次分享到此结束,欢迎大家多多交流~~

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Python操作SQLite数据库
连接数据库 从2.5版本开始,Python的标准库中就有了一个专门用于SQLite的sqlite3模块。连接SQLite数据库方式如下: import sqlite3 as dbapi con = dbapi.connect('population.db') cur = con.cursor() 第一个语句用于引用数据库API; 第二个语句创建了一个到数据库的连接
816 0
Python 操作数据库(1)
Python 操作数据库(1)
1197 0
Python 操作数据库(2)
Python 操作数据库(2)
1207 0
Python Flask 简明教程(13)--通过pymysql直接操作数据库
本文目录 1. 前言 2. 创建数据库与表 3. 安装pymysql模块 4. 连接数据库 5. 查询全部数据 6. 查询一条数据 7. 新增数据 8. 删除数据 9. 修改数据 10. 关闭资源 11. 小结
0 0
Python操作sqllite数据库
Python操作sqllite数据库
0 0
+关注
jclian91
热爱算法,热爱技术,热爱生活,期待更好的自己与明天~
文章
问答
文章排行榜
最热
最新
相关电子书
更多
Python 脚本速查手册
立即下载
Python系列直播第一讲——Python中的一切皆对象
立即下载
Python第四讲——使用IPython/Jupyter Notebook与日志服务玩转超大规模数据分析与可视化
立即下载