游标在PyMySQL中有什么作用和作用?
What function and role does a cursor play in PyMySQL?
我搜索了网络,特别是 Stack Overflow 站点,但我找不到任何关于 游标 在 PyMySQL 中扮演的角色的简单解释。为什么需要它?它有什么功能?我可以有 多个 游标吗?我可以将它作为参数传递给 class 或函数吗?
查看带有示例的教程,我编写了使用游标的代码并且确实有效。但是到目前为止,在没有真正理解游标的作用和功能的情况下,游标的使用对我来说是违反直觉的。
请帮忙...
MySQL 中的游标在大多数情况下用于从结果集中检索行,然后对该数据执行操作。游标使您能够迭代从 SQL 查询返回的行。
这是一个例子。
1) 首先我们声明一个游标:
DECLARE cursor_name CURSOR FOR SELECT_statement;
2) 打开游标
OPEN cursor_name;
3) 现在我们可以使用 FETCH 语句检索结果集中的 next 行。
(回想一下 FETCH 语句的语法:FETCH [ NEXT [ FROM ] ] cursor_name INTO variable_list;
。如您所见,游标在语法中,因此它是 FETCH 语句的重要组成部分)。
FETCH cursor_name INTO variable_list;
4) 总结:好的,所以我们已经使用 cursor_name
到 FETCH
下一行,我们将其存储在 variable_list
(变量列表,以逗号分隔,游标结果应存储在此处)。
这应该说明以下内容:
FETCH
使用 MySQL 游标获取结果集中的下一行。
- 游标是一种工具,用于遍历结果集中的行,一次一行。
pymysql游标
PyMySQL 用于 "interact" 数据库。但是,请查看 PEP 249,它定义了 Python 数据库 API 规范。
PyMySQL 是基于 PEP 249 规范的,所以 cursor 是从 PEP 249 规范派生的。
在 PEP 249 中我们看到了这个:
https://www.python.org/dev/peps/pep-0249/#cursor-objects
"光标对象
这些对象代表一个数据库游标,用于管理获取操作的上下文。从同一连接创建的游标不是隔离的,即一个游标对数据库所做的任何更改都会立即被其他游标看到。从不同连接创建的游标可以隔离也可以不隔离,这取决于事务支持的实现方式(另请参阅连接的 .rollback() 和 .commit() 方法)。"
我搜索了网络,特别是 Stack Overflow 站点,但我找不到任何关于 游标 在 PyMySQL 中扮演的角色的简单解释。为什么需要它?它有什么功能?我可以有 多个 游标吗?我可以将它作为参数传递给 class 或函数吗?
查看带有示例的教程,我编写了使用游标的代码并且确实有效。但是到目前为止,在没有真正理解游标的作用和功能的情况下,游标的使用对我来说是违反直觉的。
请帮忙...
MySQL 中的游标在大多数情况下用于从结果集中检索行,然后对该数据执行操作。游标使您能够迭代从 SQL 查询返回的行。
这是一个例子。
1) 首先我们声明一个游标:
DECLARE cursor_name CURSOR FOR SELECT_statement;
2) 打开游标
OPEN cursor_name;
3) 现在我们可以使用 FETCH 语句检索结果集中的 next 行。
(回想一下 FETCH 语句的语法:FETCH [ NEXT [ FROM ] ] cursor_name INTO variable_list;
。如您所见,游标在语法中,因此它是 FETCH 语句的重要组成部分)。
FETCH cursor_name INTO variable_list;
4) 总结:好的,所以我们已经使用 cursor_name
到 FETCH
下一行,我们将其存储在 variable_list
(变量列表,以逗号分隔,游标结果应存储在此处)。
这应该说明以下内容:
FETCH
使用 MySQL 游标获取结果集中的下一行。- 游标是一种工具,用于遍历结果集中的行,一次一行。
pymysql游标
PyMySQL 用于 "interact" 数据库。但是,请查看 PEP 249,它定义了 Python 数据库 API 规范。
PyMySQL 是基于 PEP 249 规范的,所以 cursor 是从 PEP 249 规范派生的。
在 PEP 249 中我们看到了这个: https://www.python.org/dev/peps/pep-0249/#cursor-objects
"光标对象 这些对象代表一个数据库游标,用于管理获取操作的上下文。从同一连接创建的游标不是隔离的,即一个游标对数据库所做的任何更改都会立即被其他游标看到。从不同连接创建的游标可以隔离也可以不隔离,这取决于事务支持的实现方式(另请参阅连接的 .rollback() 和 .commit() 方法)。"