美文网首页SQL小小白
SQL入门系列(十):cursor游标

SQL入门系列(十):cursor游标

作者: 凡有言说 | 来源:发表于2020-01-20 00:32 被阅读0次

在写SQL语句的时候通常是面向集合进行思考,我们更关注结果集,而不是具体的实现过程。但有时我们不需要对查询结果的所有数据行都采用相同的处理方式,而是每次处理一行或者部分行,此时就需要面向过程。游标就是这种编程方式的体现。

游标提供了一种灵活的操作方式,可以让我们从数据结果集中每次提取一条数据记录进行操作。游标让SQL这种面向集合的语言有了面向过程的能力。

游标是一种临时的数据库对象,可以指向存储在数据库表中的数据进行指针。此时游标充当了指针的作用,我们可以通过游标来对数据进行操作。

我们以王者荣耀英雄数据为例:

mysql> SELECT id, name, hp_max FROM heros WHERE hp_max > 8500;

+-------+--------+--------+
| id    | name   | hp_max |
+-------+--------+--------+
| 10007 | 程咬金 |   8611 |
| 10008 | 廉颇   |   9328 |
| 10012 | 白起   |   8638 |
| 10015 | 刘禅   |   8581 |
+-------+--------+--------+
4 rows in set (0.05 sec)

此时有4条返回结果,系统会一次性将4条记录返回到界面,无法进行其他操作。

当我们开启了游标功能,再去执行这条语句时,系统会先找到这些行,并将其存放起来,然后提供一个游标接口。需要时就可以通过这个游标一行行地取出数据,每取出一条记录,游标指针就朝前移动一次,一直到取完最后一行数据为止。

在使用Python连接数据库时,经常会用到游标功能。当我们使用Python连接MySQL时,Python相当于是MySQL服务器的一个客户端,我们是利用Python这个客户端去操作MySQL的服务器。即在Python中操作数据库,就是使用游标获取表中的数据。

具体的步骤是:
1.连接数据库,创建一个数据库对象

#安装pymysql
! pip install pymysql

#导入pymysql库
import pymysql

database_heros = pymysql.connect(host='localhost', user='root', db='heros',
                                password='ilikesql', port=3306, charset='utf8')

此时操作的是heros数据库中的表

  • host: 这个是ip地址,因为我这里是本地的,所以填127.0.0.1,也可以填localhost。
  • user:用户名,如果你也是本地的,就填root好了
  • passwd:填上设的密码就可以
  • db:这个是数据库名,这里选的是yibaidb数据库
  • port:这个是端口,本地的一般都是3306
  • charset:这个是编码方式,要和你数据库的编码方式一致,要不会连接失败

2.创建游标对象,开启游标功能

#创建游标对象
cursor = database_heros.cursor()

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

#使用execute()方法,执行SQL语句
cursor.execute('SELECT id, name, hp_max FROM heros WHERE hp_max > 8500')

此时系统会根据SQL语句找到匹配行,然后存储起来,而不是一次性打印到屏幕上。当需要的时候,再去获取即可。

4.获取结果集中的数据

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

(10007, '程咬金', 8611.0)

#一次性获取全部数据
b = cursor.fetchall()
print(b)

((10008, '廉颇', 9328.0), (10012, '白起', 8638.0), (10015, '刘禅', 8581.0))

5.断开数据库,释放资源

#断开数据库,释放资源
database_heros.close()

参考资料:
游标:当我们需要逐条处理数据时,该怎么做?
通过cursor游标讲解,带你彻底搞懂python操作mysql数据库

公众号.png

相关文章

  • SQL入门系列(十):cursor游标

    在写SQL语句的时候通常是面向集合进行思考,我们更关注结果集,而不是具体的实现过程。但有时我们不需要对查询结果的所...

  • 19年第46周:数据库中的游标Cursor

    一、什么是Cursor? cursor游标是数据缓冲区,存放SQL语句执行的结果 二、参考 数据库中cursor游...

  • PL/SQL——游标(CURSOR)

    官方文档 SELECT-INTO 用于从SELECT语句中,获取单行数据的最快最简单的方法。语法:SELECT s...

  • 第六十二章 SQL命令 OPEN

    第六十二章 SQL命令 OPEN 打开游标。 大纲 参数 cursor-name - 游标的名称,已经声明过了。游...

  • Python-pymysql库

    1、导入库 2、连接数据库 3、创建一个游标对象 cursor 4、编写SQL语句 5、执行SQL语句 6、通过f...

  • Mysql学习笔记

    Mysql 学习笔记(六) 游标(Cursor) 是系统为用户开设的一个数据缓冲区,存放 SQL 语句的执行结果。...

  • 两行代码实现 读取手机联系人

    可以直接获取系统数据库对应的游标指针,直接上代码: Cursor cursor=null; try{ cursor...

  • 游标

    游标-处理多行数据类型 --方法一 declare --定义游标 cursor user_sum_curs...

  • Mongodb学习笔记(四)之 游标操作

    游标操作 cursor (1)游标是什么?通俗来说,游标不是查询结果,而是查询的返回资源或接口。(2)通过这个接口...

  • python: DB连接池设定

    在脚本内设定DB连接池的写法 如上,可调用游标cursor去执行sql语句,每个请求结束时可close掉连接con...

网友评论

    本文标题:SQL入门系列(十):cursor游标

    本文链接:https://www.haomeiwen.com/subject/xvorzctx.html