带你彻底搞懂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开发之thread实现布朗运动的方法
Nov 11 Python
Python使用functools模块中的partial函数生成偏函数
Jul 02 Python
selenium+python 对输入框的输入处理方法
Oct 11 Python
Python异常的检测和处理方法
Oct 26 Python
浅谈Python中(&,|)和(and,or)之间的区别
Aug 07 Python
给你一面国旗 教你用python画中国国旗
Sep 24 Python
ubuntu上安装python的实例方法
Sep 30 Python
用python爬取历史天气数据的方法示例
Dec 30 Python
Python中 Global和Nonlocal的用法详解
Jan 20 Python
使用 pytorch 创建神经网络拟合sin函数的实现
Feb 24 Python
mac安装python3后使用pip和pip3的区别说明
Sep 01 Python
利用python实现后端写网页(flask框架)
Feb 28 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/04/09 日漫
PHP安装攻略:常见问题解答(三)
2006/10/09 PHP
如何用phpmyadmin设置mysql数据库用户的权限
2012/01/09 PHP
关于file_get_contents返回为空或函数不可用的解决方案
2013/06/24 PHP
Mac OS下配置PHP+MySql环境
2015/02/25 PHP
php计算税后工资的方法
2015/07/28 PHP
PHP面向对象之事务脚本模式(详解)
2017/06/07 PHP
为Plesk PHP7启用Oracle OCI8扩展方法总结
2019/03/29 PHP
基于jquery的一个简单的脚本验证插件
2010/04/05 Javascript
jquery删除数组中重复元素
2016/12/05 Javascript
Node.js连接postgreSQL并进行数据操作
2016/12/18 Javascript
jQuery插件FusionWidgets实现的AngularGauge图效果示例【附demo源码】
2017/03/23 jQuery
Angular2利用组件与指令实现图片轮播组件
2017/03/27 Javascript
一篇文章让你彻底弄懂JS的事件冒泡和事件捕获
2017/08/14 Javascript
JS中利用FileReader实现上传图片前本地预览功能
2018/03/02 Javascript
对vux点击事件的优化详解
2018/08/28 Javascript
vue动画之点击按钮往上渐渐显示出来的实例
2018/09/29 Javascript
Vue 2.0 中依赖注入 provide/inject组合实战
2019/06/20 Javascript
浅谈Vue中render中的h箭头函数
2019/11/07 Javascript
nodejs实现的http、https 请求封装操作示例
2020/02/06 NodeJs
[00:32]2018DOTA2亚洲邀请赛OpTic出场
2018/04/03 DOTA
[56:46]Liquid vs IG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
Python利用splinter实现浏览器自动化操作方法
2018/05/11 Python
Python Flask前后端Ajax交互的方法示例
2018/07/31 Python
Python多进程池 multiprocessing Pool用法示例
2018/09/07 Python
利用pyecharts实现地图可视化的例子
2019/08/12 Python
PyQt5实现登录页面
2020/05/30 Python
悬挂训练绳:TRX
2017/12/14 全球购物
Crocs波兰官方商店:女鞋、男鞋、童鞋、洞洞鞋
2019/10/08 全球购物
进步之星获奖感言
2014/02/22 职场文书
珍惜水资源建议书
2014/03/12 职场文书
开学典礼策划方案
2014/05/28 职场文书
幸福家庭标语
2014/06/27 职场文书
法人身份证明书
2014/10/08 职场文书
解决vue自定义组件@click点击失效问题
2022/04/30 Vue.js
TypeScript实用技巧 Nominal Typing名义类型详解
2022/09/23 Javascript