(数据科学学习手札51)用pymysql来操控MySQL数据库
一、简介
pymysql是Python中专门用来操控MySQL数据库的模块,通过pymysql,可以编写简短的脚本来方便快捷地操控MySQL数据库,本文就将针对pymysql的基本功能进行介绍;
二、操控数据库
2.1 连接数据库
利用pymysql.connect(host,user,password,port,db)来实现对已知MySQL数据库的连接,其中各参数分别对应着目标数据库的各项属性,db用于指定要连接的database的名称,下面是一个示例:
要连接的数据库:

import pymysql '''连接数据库'''
try:
print('-'*200)
print('尝试连接数据库')
print('-'*200)
db = pymysql.connect(host='localhost',user='root',password='我的密码',port=3306,db='test')
print('连接成功!','\n',
'host:{}'.format(db.host),'\n',
'port:{}'.format(db.port),'\n',
'user:{}'.format(db.user),'\n',
'database:{}'.format(db.db)) except Exception as e:
print('因{},连接失败'.format(e))
finally:
print('-'*200,'\n','连接过程结束')
print('-'*200)
若连接成功,显示如下信息:

2.2 插入数据
在成功连接数据库之后,我们使用db.cursor()来获取数据库的操作游标:
'''获取操作游标'''
cur = db.cursor()
接下来我们使用.execute()来执行需要完成的SQL语句,其传入参数为字符串类型的SQL语句,譬如,下面的例子中我们创建一个新的表,并将sklearn中内置的鸢尾花数据传入进去:
from sklearn.datasets import load_iris '''获取鸢尾花数据,其中X,y为二维数组'''
X,y = load_iris(return_X_y=True)
'''建立指定鸢尾花类别名称的列表'''
Species = ['setosa','versicolor','virginica'] '''通过操作游标执行SQL语句,以创建iris表'''
cur.execute("CREATE TABLE IF NOT EXISTS iris"
"(Sepal_Length float,"
"Sepal_Width float,"
"Petal_Length float,"
"Petal_Width float,Species char(20)"
")") '''构造将X,y数据一次性插入iris的SQL语句'''
BaseSQL = "INSERT INTO iris VALUES" for i in range(X.shape[0]):
BaseSQL += "({},{},{},{},'{}'),".format(X[i,0],X[i,1],X[i,2],X[i,3],Species[y[i]]) '''去除末尾多余的逗号'''
BaseSQL = BaseSQL[:-1] '''执行插入鸢尾花数据的SQL语句'''
cur.execute(BaseSQL)
运行完上述语句,在已经连接数据库的navicat中查看iris表中的全部数据:
USE test;
SELECT * FROM iris;

这是会发现,查询结果只有一张空表,这是因为在执行完插入数据的语句后,并没有提交结果,使用.commit()向数据库提交结果:
'''提交结果'''
db.commit()
在navicat中再次查询得到想要的结果:

2.3 查询数据
查询功能是数据库中核心功能之一,查询取数也是数据分析人员在数据库上最常用的操作,在pymysql中想要完成查询取数的过程,要在执行SQL语句之后,对我们的游标对象使用.fetchall()方法来取得对应的查询结果:
'''查询取数'''
cur.execute("SELECT Species,COUNT(*) FROM iris GROUP BY Species") '''获取查询结果'''
results = cur.fetchall() print(results)

可以看到,取回的结果为一个规整的tuple对象,可以按照其格式打印出查询结果:
print('Species','|','Counts')
for result in results:
print('-'*20)
print(result[0],'|',result[1])
print('-'*20)

或者转换为其他格式保存为其他规整的格式以便进一步分析:
import pandas as pd df = pd.DataFrame(list(results),columns=['Species','Counts'])
print(df)

而关于其他对数据库的操作(如删除、更新等),与上面类似,只是涉及到更改数据库中数据时,不要忘记commit();
2.4 关闭数据库
在完成需要的操作后,不要忘记断开与数据库间的连接:
db.close()
以上就是本文的全部内容,如有笔误,望指出!
(数据科学学习手札51)用pymysql来操控MySQL数据库的更多相关文章
- (数据科学学习手札55)利用ggthemr来美化ggplot2图像
一.简介 R中的ggplot2是一个非常强大灵活的数据可视化包,熟悉其绘图规则后便可以自由地生成各种可视化图像,但其默认的色彩和样式在很多时候难免有些过于朴素,本文将要介绍的ggthemr包专门针对原 ...
- (数据科学学习手札50)基于Python的网络数据采集-selenium篇(上)
一.简介 接着几个月之前的(数据科学学习手札31)基于Python的网络数据采集(初级篇),在那篇文章中,我们介绍了关于网络爬虫的基础知识(基本的请求库,基本的解析库,CSS,正则表达式等),在那篇文 ...
- (数据科学学习手札49)Scala中的模式匹配
一.简介 Scala中的模式匹配类似Java中的switch语句,且更加稳健,本文就将针对Scala中模式匹配的一些基本实例进行介绍: 二.Scala中的模式匹配 2.1 基本格式 Scala中模式匹 ...
- (数据科学学习手札47)基于Python的网络数据采集实战(2)
一.简介 马上大四了,最近在暑期实习,在数据挖掘的主业之外,也帮助同事做了很多网络数据采集的内容,接下来的数篇文章就将一一罗列出来,来续写几个月前开的这个网络数据采集实战的坑. 二.马蜂窝评论数据采集 ...
- (数据科学学习手札44)在Keras中训练多层感知机
一.简介 Keras是有着自主的一套前端控制语法,后端基于tensorflow和theano的深度学习框架,因为其搭建神经网络简单快捷明了的语法风格,可以帮助使用者更快捷的搭建自己的神经网络,堪称深度 ...
- (数据科学学习手札42)folium进阶内容介绍
一.简介 在上一篇(数据科学学习手札41)中我们了解了folium的基础内容,实际上folium在地理信息可视化上的真正过人之处在于其绘制图像的高度可定制化上,本文就将基于folium官方文档中的一些 ...
- (数据科学学习手札40)tensorflow实现LSTM时间序列预测
一.简介 上一篇中我们较为详细地铺垫了关于RNN及其变种LSTM的一些基本知识,也提到了LSTM在时间序列预测上优越的性能,本篇就将对如何利用tensorflow,在实际时间序列预测任务中搭建模型来完 ...
- (数据科学学习手札36)tensorflow实现MLP
一.简介 我们在前面的数据科学学习手札34中也介绍过,作为最典型的神经网络,多层感知机(MLP)结构简单且规则,并且在隐层设计的足够完善时,可以拟合任意连续函数,而除了利用前面介绍的sklearn.n ...
- (数据科学学习手札32)Python中re模块的详细介绍
一.简介 关于正则表达式,我在前一篇(数据科学学习手札31)中已经做了详细介绍,本篇将对Python中自带模块re的常用功能进行总结: re作为Python中专为正则表达式相关功能做出支持的模块,提供 ...
随机推荐
- 转自csdn:计算机启动过程
启动第一步--加载BIOS 当你打开计算机电源,计算机会首先加载BIOS信 息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它.这是因为BIOS中 包含了CPU的相关信息.设备启动顺序信息 ...
- [EffectiveC++]item3:尽可能使用const
将某些东西声明为const可以帮助编译器检测出错误用法,const 编译器强制实施bitwise constness,但是你code的时候应该使用“概念上的常量性” 当const和non-const成 ...
- UML设计--人月神教
任务分配 用例图 类图 活动图 状态图 使用工具 所有图都是用VISO编辑出来的,因为VISO是比较经典工具,也是学校电脑自带的.....
- 死磕salt系列-salt 故障汇总
这里将salt使用过程中遇到的所有的故障进行一个汇总. grains 匹配后多了一个列表 salt-master中配置jinja模板来匹配自定义的grins. vim /etc/salt/minion ...
- 消息中间件--"rocketmq"01之环境搭建
前置知识 ssh工具 连接linux工具SecureCRT 颜色设置,参考 中文乱码,参考 Linux相关知识 centos7 防火墙firewalld的基本使用,参考 启动: systemctl s ...
- momenta
编程:1.dp的题 2.白纸写代码,给一串数和一个目标值,使用四则运算和括号使得这串数最后计算结果为目标值,打印出所有的方案,要求是这些数每个最多被使用一次,可以不被用到. 3.考了一个查找数组里,未 ...
- Unity3D-飞机拖尾效果
1.插件准备 unity3d官网,Assert Store搜索Cartoon_airplane 插件 2.拖尾效果实现 飞机显示 拖尾组件设计 在airplane_02下 右键 Effects-Tra ...
- PAT——1071. 小赌怡情
常言道“小赌怡情”.这是一个很简单的小游戏:首先由计算机给出第一个整数:然后玩家下注赌第二个整数将会比第一个数大还是小:玩家下注t个筹码后,计算机给出第二个数.若玩家猜对了,则系统奖励玩家t个筹码:否 ...
- Selenium自动化测试值环境搭建
Selenium自动化测试之环境搭建 一.背景介绍 自动化测试近几年在测试领域很火,出去面试要是说不会自动化测试薪资都不好意思往高了要!很多公司做敏捷测试用到自动化,其他一些公司也是跟风,即使用不上自 ...
- 软工之404 Note Found团队
如果记忆是一个罐头的话,我希望这一罐罐头不会过期----<重庆森林> 404 Note Found Team 如果记忆是一个备忘录的话,别说了,它不会过期----<404 Note ...