带你彻底搞懂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 相关文章推荐
通过数据库对Django进行删除字段和删除模型的操作
Jul 21 Python
实例解析Python设计模式编程之桥接模式的运用
Mar 02 Python
Python 读写文件和file对象的方法(推荐)
Sep 12 Python
Python编写一个闹钟功能
Jul 11 Python
详解Python中的动态属性和特性
Apr 07 Python
Python+Pandas 获取数据库并加入DataFrame的实例
Jul 25 Python
python连接mongodb密码认证实例
Oct 16 Python
关于Python 中的时间处理包datetime和arrow的方法详解
Mar 19 Python
Python作用域与名字空间原理详解
Mar 21 Python
python Cartopy的基础使用详解
Nov 01 Python
Biblibili视频投稿接口分析并以Python实现自动投稿功能
Feb 05 Python
Python访问Redis的详细操作
Jun 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
解析php多线程下载远程多个文件
2013/06/25 PHP
PHP调用MsSQL Server 2012存储过程获取多结果集(包含output参数)的详解
2013/07/03 PHP
PHP读书笔记_运算符详解
2016/07/01 PHP
关于Mozilla浏览器不支持innerText的解决办法
2011/01/01 Javascript
jQuery 阴影插件代码分享
2012/01/09 Javascript
JavaScript设计模式之单体模式全面解析
2016/09/09 Javascript
AngularJS删除路由中的#符号的方法
2016/09/20 Javascript
前端常见跨域解决方案(全)
2017/09/19 Javascript
React路由管理之React Router总结
2018/05/10 Javascript
vue 录制视频并压缩视频文件的方法
2018/07/27 Javascript
微信小程序实现圆形进度条动画
2020/11/18 Javascript
JS字符串与二进制的相互转化实例代码详解
2019/06/28 Javascript
vue倒计时刷新页面不会从头开始的解决方法
2020/03/03 Javascript
Python实现数通设备端口使用情况监控实例
2015/07/15 Python
linux环境下的python安装过程图解(含setuptools)
2017/11/22 Python
Python实现比较扑克牌大小程序代码示例
2017/12/06 Python
python 自动重连wifi windows的方法
2018/12/18 Python
使用urllib库的urlretrieve()方法下载网络文件到本地的方法
2018/12/19 Python
使用selenium和pyquery爬取京东商品列表过程解析
2019/08/15 Python
Python 实现训练集、测试集随机划分
2020/01/08 Python
使用PyCharm官方中文语言包汉化PyCharm
2020/11/18 Python
详解CSS3选择器的使用方法汇总
2015/11/24 HTML / CSS
澳洲CFL商城:CHEMIST FOR LESS(中文)
2021/02/28 全球购物
怎样在程序里获得一个空指针
2015/01/24 面试题
一套.net面试题及答案
2016/11/02 面试题
旅游项目开发策划书
2014/01/18 职场文书
趣味体育活动方案
2014/02/08 职场文书
项目负责人任命书
2014/06/04 职场文书
欢迎标语大全
2014/06/21 职场文书
授权委托书怎么写
2014/09/25 职场文书
2015年党小组工作总结
2015/05/26 职场文书
负责培养人意见
2015/06/05 职场文书
单位同意报考证明
2015/06/17 职场文书
《7的乘法口诀》教学反思
2016/02/18 职场文书
java基础——多线程
2021/07/03 Java/Android
分享Python异步爬取知乎热榜
2022/04/12 Python