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

作者:Huang supreme 时间:2024-01-25 21:53:58 

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语法,得到任何我们最终想要的结果集。

来源:https://blog.csdn.net/weixin_41261833/article/details/103827819

标签:python,操作,mysql
0
投稿

猜你喜欢

  • Python matplotlib实用绘图技巧汇总

    2023-10-05 01:12:39
  • Python 稀疏矩阵-sparse 存储和转换

    2022-05-29 03:13:22
  • Python3 读取Word文件方式

    2021-03-21 22:36:37
  • PHP的mysqli_select_db()函数讲解

    2023-06-07 18:59:44
  • mysql如何查询日期与时间

    2024-01-26 02:03:17
  • 三大UML建模工具Visio、Rational Rose、PowerDesign的区别比较

    2022-05-27 12:22:45
  • 详解python读取matlab数据(.mat文件)

    2021-03-04 19:29:29
  • 获取一个数字的个位、十位、百位的函数代码

    2011-02-20 11:06:00
  • 排序的人文魅力

    2008-05-06 12:47:00
  • 详解操作python容器的内置通用函数

    2022-12-09 04:52:39
  • JQuery对ASP.NET MVC数据进行更新删除

    2024-06-05 09:32:05
  • Python中使用异常处理来判断运行的操作系统平台方法

    2021-03-28 07:37:23
  • Godaddy 导入导出MSSQL数据库的实现步骤

    2024-01-19 15:11:56
  • Python 3.7新功能之dataclass装饰器详解

    2023-09-13 16:32:38
  • Python开发的十个小贴士和技巧及长常犯错误

    2023-12-09 10:55:50
  • 如何让对方在线查看我的程序代码?

    2010-05-13 16:34:00
  • Python定时任务框架APScheduler原理及常用代码

    2021-02-17 23:28:10
  • python opencv对图像进行旋转且不裁剪图片的实现方法

    2023-03-12 02:40:09
  • 简述MySql四种事务隔离级别

    2024-01-18 12:52:11
  • Python网站验证码识别

    2023-09-11 04:29:36
  • asp之家 网络编程 m.aspxhome.com