带你彻底搞懂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中的序列化存储的方法
Apr 28 Python
Python的for和break循环结构中使用else语句的技巧
May 24 Python
python中列表和元组的区别
Dec 18 Python
python 日志增量抓取实现方法
Apr 28 Python
Python中pip更新和三方插件安装说明
Jul 08 Python
python爬虫之urllib,伪装,超时设置,异常处理的方法
Dec 19 Python
Python使用ctypes调用C/C++的方法
Jan 29 Python
python利用openpyxl拆分多个工作表的工作簿的方法
Sep 27 Python
pytorch中的自定义反向传播,求导实例
Jan 06 Python
PageFactory设计模式基于python实现
Apr 14 Python
TensorFlow的自动求导原理分析
May 26 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
简单易用的计数器(数据库)
2006/10/09 PHP
一些关于PHP的知识
2006/11/17 PHP
PHP5.3.1 不再支持ISAPI
2010/01/08 PHP
PHP实现通过中文字符比率来判断垃圾评论的方法
2014/10/20 PHP
PHP载入图像imagecreatefrom_gif_jpeg_png系列函数用法分析
2016/11/14 PHP
laravel框架与其他框架的详细对比
2019/10/23 PHP
js实现iframe动态调整高度的代码
2008/01/06 Javascript
使用PHP+JQuery+Ajax分页的实现
2013/04/23 Javascript
使用CSS3的scale实现网页整体缩放
2014/03/18 Javascript
jQuery Ajax()方法使用指南
2014/11/19 Javascript
原生JS实现网络彩票投注效果
2016/09/25 Javascript
JavaScript定时器实现的原理分析
2016/12/06 Javascript
浅谈js中function的参数默认值
2017/02/20 Javascript
jquery 通过ajax请求获取后台数据显示在表格上的方法
2018/08/08 jQuery
jQuery滑动效果实现方法分析
2018/09/05 jQuery
微信小程序如何刷新当前界面的实现方法
2019/06/07 Javascript
微信小程序实现页面分享onShareAppMessage
2019/08/12 Javascript
[55:42]VG vs VGJ.T 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
[03:33]TI9战队采访 - Infamous
2019/08/20 DOTA
python删除某个字符
2018/03/19 Python
python操作mysql代码总结
2018/06/01 Python
解决pycharm安装后代码区不能编辑的问题
2018/10/28 Python
详解Python爬取并下载《电影天堂》3千多部电影
2019/04/26 Python
Python的互斥锁与信号量详解
2019/09/12 Python
Python2.7:使用Pyhook模块监听鼠标键盘事件-获取坐标实例
2020/03/14 Python
对Pytorch 中的contiguous理解说明
2021/03/03 Python
选购世界上最好的美妆品:Cult Beauty
2017/11/03 全球购物
网络程序员自荐信
2014/01/25 职场文书
爸爸的花儿落了教学反思
2014/02/20 职场文书
社区文化建设方案
2014/05/02 职场文书
庆元旦演讲稿
2014/09/15 职场文书
群众路线自查自纠工作情况报告
2014/10/28 职场文书
学习走群众路线心得体会
2014/11/05 职场文书
小学校园广播稿
2015/08/18 职场文书
apache基于端口创建虚拟主机的示例
2021/04/22 Servers
微软团队与 NASA 科学家和惠普企业(HPE)的工程师合作
2022/04/21 数码科技