带你彻底搞懂python操作mysql数据库(cursor游标讲解)


Posted in Python onJanuary 06, 2020

1、什么是游标?

带你彻底搞懂python操作mysql数据库(cursor游标讲解)

一张图讲述游标的功能:

带你彻底搞懂python操作mysql数据库(cursor游标讲解)

图示说明:

带你彻底搞懂python操作mysql数据库(cursor游标讲解)

2、使用游标的好处?

如果不使用游标功能,直接使用select查询,会一次性将结果集打印到屏幕上,你无法针对结果集做第二次编程。使用游标功能后,我们可以将得到的结果先保存起来,然后可以随意进行自己的编程,得到我们最终想要的结果集。

3、利用python连接数据库,经常会使用游标功能

1)以python连接mysql数据库为例

带你彻底搞懂python操作mysql数据库(cursor游标讲解)

2)使用游标的操作步骤

  • 首先,使用pymysql连接上mysql数据库,得到一个数据库对象。
  • 然后,我们必须要开启数据库中的游标功能,得到一个游标对象。
  • 接着,使用游标对象中的execute()方法,去执行某个SQL语句,系统会根据你的SQL语句,找到这些匹配行,给你存储起来,而不是一次性的打印到频幕上。当你什么时候需要这个结果中的数据的时候,你就去获取它。
  • 最后,就是获取结果集中的数据了,这里有两种方法获取结果集中的数据。一个是fetchone(),该方法一次获取一条记录,每一条记录是一个元组形式的数据,每获取一条记录游标会往前移动一格,等待获取下一条记录;一个是fetchall()方法,能够一次性的获取所有的数据,该方法返回的是一个元组列表。
  • 当完成所有操作后,记得断开数据库的连接,释放资源。

① 连接数据库,创建一个数据库对象

db = pymysql.connect(host='localhost',user='root',db='huangwei',
           password='123456',port=3306,charset='utf8')

注意:我们要操作的是huangwei这个数据库中的表,因此在连接的时候使用db这个参数来指明要使用哪一个数据库;由于mysql数据库就装在本机上,因此可以写localhost,当然你也可以写成主机名,或者主机ip;

② 开启游标功能,创建游标对象

# 这里使用的是数据库对象db中的cursor()方法,
cursor = db.cursor()

③ 使用execute()方法,执行SQL语句

cursor.execute('select sname,ssex from student')

注意:当开启游标功能执行这个SQL语句后,系统并不会将结果直接打印到频幕上,而是将上述得到的结果,找个地方存储起来,提供一个游标接口给我们,当你需要获取数据 的时候,就可以从中拿数据。

④ 使用fetchone()或fetchall()获取数据

# 一次性获取一条数据
a = cursor.fetchone()

# 一次性获取所有数据
a = cursor.fetchall()

注意:使用游标获取数据,需要用一个变量将结果存储起来,才能被我们拿来做二次使用,这里在下面的案例中会体现出来。

⑤ 断开数据库,释放资源

db.close()

3)案例讲解

需求:以操做huangwei数据库中的student表为例 。完成【筛选出女生,同时将sname以这种形式输出“我叫周梅,我是一个学生!”】这个需求。

① student表

 带你彻底搞懂python操作mysql数据库(cursor游标讲解)

② 使用fetchone()方法,获取SQL查询结果集中的数据

db = pymysql.connect(host='localhost',user='root',db='huangwei',
           password='123456',port=3306,charset='utf8')
cursor = db.cursor()
cursor.execute('select count(*) from student')
aa = cursor.fetchone()
print(aa)

# 注意这一句一定是在循环之外,不能放到循环里面。想想这是为什么?
cursor.execute('select sname,ssex from student')  
for i in range(aa[0]):
  a,b = cursor.fetchone()
  if b == "女":
    a = "我叫{},我是一个学生!".format(a)
    print(a)
db.close()

结果如下:

带你彻底搞懂python操作mysql数据库(cursor游标讲解)

③ 使用fetchall()方法,获取SQL查询结果集中的数据

db = pymysql.connect(host='localhost',user='root',db='huangwei',
           password='123456',port=3306,charset='utf8')
cursor = db.cursor()
cursor.execute('select sname,ssex from student')
aa = cursor.fetchall()
# print(aa)
for a,b in aa:
  if b == "女":
    a = "我叫{},我是一个学生!".format(a)
    print(a)
db.close()

 结果如下:

带你彻底搞懂python操作mysql数据库(cursor游标讲解)

④ 结果分析

通过上述操作可以发现,这种游标功能可以帮助我们对SQL语句得到的结果集,进行二次开发,然后通过灵活的python语法,得到任何我们最终想要的结果集。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python数组条件过滤filter函数使用示例
Jul 22 Python
Python 中urls.py:URL dispatcher(路由配置文件)详解
Mar 24 Python
python下10个简单实例代码
Nov 15 Python
python之DataFrame实现excel合并单元格
Feb 22 Python
python实现在cmd窗口显示彩色文字
Jun 24 Python
python判断所输入的任意一个正整数是否为素数的两种方法
Jun 27 Python
python3使用腾讯企业邮箱发送邮件的实例
Jun 28 Python
python+numpy按行求一个二维数组的最大值方法
Jul 09 Python
NumPy统计函数的实现方法
Jan 21 Python
解决pyinstaller 打包exe文件太大,用pipenv 缩小exe的问题
Jul 13 Python
python如何编写类似nmap的扫描工具
Nov 06 Python
Python捕获、播放和保存摄像头视频并提高视频清晰度和对比度
Apr 14 Python
详解python tkinter模块安装过程
Jan 06 #Python
解决tensorflow由于未初始化变量而导致的错误问题
Jan 06 #Python
Python3 全自动更新已安装的模块实现
Jan 06 #Python
tensorflow 只恢复部分模型参数的实例
Jan 06 #Python
春节到了 教你使用python来抢票回家
Jan 06 #Python
Tensorflow 自定义loss的情况下初始化部分变量方式
Jan 06 #Python
在flask中使用python-dotenv+flask-cli自定义命令(推荐)
Jan 05 #Python
You might like
日本十大科幻动漫 宇宙骑士垫底,第一已成经典
2020/03/04 日漫
经典的星际争霸,满是回忆的BGM
2020/04/09 星际争霸
php常用的url处理函数总结
2014/11/19 PHP
Prototype源码浅析 String部分(二)
2012/01/16 Javascript
js读取被点击次数的简单实例(从数据库中读取)
2014/03/07 Javascript
jquery获取url参数及url加参数的方法
2015/10/26 Javascript
Bootstrap3制作自己的导航栏
2016/05/12 Javascript
轮播图组件js代码
2016/08/08 Javascript
网络传输协议(http协议)
2016/11/18 Javascript
vue-router实现webApp切换页面动画效果代码
2017/05/25 Javascript
element-ui upload组件多文件上传的示例代码
2018/10/17 Javascript
关于微信公众号开发无法支付的问题解决
2018/12/28 Javascript
JavaScript ES6中的简写语法总结与使用技巧
2018/12/30 Javascript
JavaScript学习笔记之基于定时器实现图片无缝滚动功能详解
2019/01/09 Javascript
浅谈目前可以使用ES10的5个新特性
2019/06/25 Javascript
js实现简易计算器功能
2019/10/18 Javascript
微信小程序 flexbox layout快速实现基本布局的解决方案
2020/03/24 Javascript
小谈angular ng deploy的实现
2020/04/07 Javascript
代码分析Python地图坐标转换
2018/02/08 Python
python验证码识别教程之利用滴水算法分割图片
2018/06/05 Python
Pytorch基本变量类型FloatTensor与Variable用法
2020/01/08 Python
python游戏开发的五个案例分享
2020/03/09 Python
Xadmin+rules实现多选行权限方式(级联效果)
2020/04/07 Python
解决Python发送Http请求时,中文乱码的问题
2020/04/30 Python
Python3爬虫mitmproxy的安装步骤
2020/07/29 Python
顶级宝石首饰网络零售商:Angara
2016/10/25 全球购物
北京RT科技有限公司.net工程师面试题
2013/02/15 面试题
Linux文件系统类型
2012/09/16 面试题
本科毕业生自我鉴定
2013/11/02 职场文书
师范毕业生自我鉴定
2014/01/15 职场文书
道德模范先进事迹
2014/02/14 职场文书
公司营业员的自我评价
2014/03/04 职场文书
小学国旗下的演讲稿
2014/08/28 职场文书
2014年纪委工作总结
2014/12/05 职场文书
工作态度不好检讨书
2015/05/06 职场文书
教您怎么制定西餐厅运营方案 ?
2019/07/05 职场文书