python操作mysql,定义了一个查询多条数据的方法selectAll:

# 查询表中多条数据

def selectAll(self, condition):

try:

self.cur.execute(condition) # 在游标下执行语句

self.cur.scroll(0, mode='absolute') # 光标回到初始位置

results = self.cur.fetchall() # 返回游标中所有结果

except pymysql.Error as e:

results = "SQL10001" # 数据库执行错误

print("Mysql Error %d: %s" % (e.args[0], e.args[1]))

# print("error_info: %s" %e)

finally:

return results

【问题】关于self.cur.scroll()方法,为什么需要移动光标回到初始位置?把这条语句注释了输出结果也不变啊?

self.cur.scroll(0, mode='absolute') # 光标回到初始位置

【查询1】移动光标,scroll()方法概述

scroll(value, mode)

mode缺省值为'relative',代表相对移动。

当mode='relative'时,value就是移动的长度,value>0向后移动(从位置0移动到位置2),value<0向前移动(比如从位置2移动到位置0)

self.cur.scroll(-2, 'relative')

可以缩写为:

self.cur.scroll(-2)

当mode='absolute'时,代表绝对移动,value就代表移动的绝对位置,value=0就代表移动到位置0处,就是结果集开头,value=3就是移动到位置3处,也就是第4条记录处。

self.cur.scroll(0, 'absolute')

【查询2】scroll()方法使用实例

存在数据库表如下:

pdx

name

sex

dept

1

张三

1

市场部

2

李四

1

人事部

3

陈灵

0

技术部

4

王萌

0

财务部

实例1

self.cur.execute("select * from yui_user;") # 在游标下执行语句

results_crash = self.cur.fetchall() # 返回游标中所有结果

results = self.cur.fetchall() # 返回游标中所有结果

print(results_crash )

print(results)

由于第二行代码首先取出了所有结果,游标也相应的从结果集开始位置移动到结果集末尾,所以第二次使用fetchall()取出的就是空值。

>>> ((1, '张三', '1', '市场部'),

(2, '李四', '1', '人事部'),

(3, '陈灵', '0', '技术部'),

(4, '王萌', '0', '财务部'))

>>>()

实例2

self.cur.execute("select * from yui_user;") # 在游标下执行语句

results_crash = self.cur.fetchall() # 返回游标中所有结果

self.cur.scroll(-2, 'relative') # 光标向前移动2个位置

results = self.cur.fetchall() # 返回游标中所有结果

print(results_crash )

print(results)

与实例1不同的就是在第三行添加了scroll()方法移动光标,此时光标移动到pdx为3的位置,再次使用fetchall()取出的即为最后两条记录。

>>> ((1, '张三', '1', '市场部'),

(2, '李四', '1', '人事部'),

(3, '陈灵', '0', '技术部'),

(4, '王萌', '0', '财务部'))

>>>((3, '陈灵', '0', '技术部'),

(4, '王萌', '0', '财务部'))

【我对问题的解释】

单独把try执行部分拎出来:

try:

self.cur.execute(condition) # 在游标下执行语句

self.cur.scroll(0, mode='absolute') # 光标回到初始位置

results = self.cur.fetchall() # 返回游标中所有结果

由于第三句 results = self.cur.fetchall()之前没有执行其他从游标中获取结果的语句,即光标没有进行移动。因此无论有没有把光标移动到初始位置这一条语句,输出结果是不变的(目前结果也是正确的)。

但如果在results = self.cur.fetchall()之前再加入别的fetchall()或fetchone(),那就必须移动光标了,否则结果不正确。为了避免出现这种情况,每次在需要最后输出正确的fetchall()的结果前,加入移动光标的操作,确保获取的结果是正确的结果

以上是我对最初的问题的解释。如有错误或不足之处请一定指出来,虚心学习。

python中scroll的用法_Python_关于self.cur.scroll()的使用理解相关推荐

  1. python中的super用法详解_【Python】【类】super用法详解

    一.问题的发现与提出 在Python类的方法(method)中,要调用父类的某个方法,在Python 2.2以前,通常的写法如代码段1: 代码段1: class A: def __init__(sel ...

  2. python中MySQLdb模块用法实例

    篇文章主要介绍了python中MySQLdb模块用法,以实例形式详细讲述了MySQLdb模块针对MySQL数据库的各种常见操作方法,非常具有实用价值,需要的朋友可以参考下 本文实例讲述了python中 ...

  3. 五分钟理解yield在python中的简单用法,让你不再迷惑

    很多同学无论是在学习python还是使用python的过程中,都会遇到yield关键字,这个让人头大的问题,今天,就给大家分享一下我自学yield的心路历程 基本概念: (1)在 Python 中,使 ...

  4. format函数python的顺序_[转载] Python中format函数用法

    Python中format函数用法 format优点 format是python2.6新增的格式化字符串的方法,相对于老版的%格式方法,它有很多优点. 1.不需要理会数据类型的问题,在%方法中%s只能 ...

  5. python代码大全表解释-python中的字典用法大全的代码

    如下代码是关于python中的字典用法大全的代码. #!/usr/bin/env python # # [SNIPPET_NAME: Dictionaries 101] # [SNIPPET_CATE ...

  6. python教程实例-Python中函数的用法实例教程

    本文以数值计算为例讲述了Python中函数的用法,分享给大家供大家参考借鉴之用.具体如下: 我们都知道圆的面积计算公式为: S = πr2 当我们知道半径r的值时,就可以根据公式计算出面积.假设我们需 ...

  7. 详解python中的用法_详解python中*号的用法

    1.表示乘号 2.表示倍数,例如: def T(msg,time=1): print((msg+' ')*time) T('hi',3) 打印结果(打印3次): hi hi hi 3.单个 * (1) ...

  8. python中 str.strip()用法

    python中 str.strip()用法 1.描述 str.strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列. (即可以去除特殊字符串) 注意:该方法只能删除开头或是 ...

  9. Python中的del用法

    python中的del用法比较特殊,新手学习往往产生误解,弄清del的用法,可以帮助深入理解python的内存方面的问题. python的del不同于C的free和C++的delete. 由于pyth ...

最新文章

  1. Android 保持Service不被Kill掉的方法--双Service守护 Android实现双进程守护
  2. 7.6 yum更换国内源 7.7 yum下载rpm包 7.8/7.9 源码包安装
  3. 决战双十一,促销海报设计模板,学习起来
  4. 用注解给映射视图的类创建联合主键
  5. 使用广泛的开源PCB文件查看器 Gerbv 含多个严重漏洞
  6. [Algorithm NLP] 文本深度表示模型——word2vecdoc2vec词向量模型
  7. 2009年程序员考试大纲
  8. excel熵值法计算权重_由搜索权重排序引入的思考
  9. 1x pcie 速度_usb 3.0 速度 pciex1 pci 速度 各总线的速度
  10. 命令行排序文件夹大小
  11. LTE学习笔记 ——SRB、DRB
  12. 直播 编解码、 协议、网络传输
  13. 谷仓创造区块链+电商消费新模式
  14. vue3 setup语法糖事件引用和写法
  15. QImage 32bit转8bit
  16. 在公路路肩施工阶段中机械设备与路平石模具配合显威力
  17. CAD画图 ——基础和直线
  18. qt widget 最大_Qt窗口操作函数(最大化,全屏,隐藏最大化,最小化)
  19. 读《Weighted Graph Based Description for Finger-Vein Recognition》
  20. 中职计算机优质课教学设计,中职教师优秀教学设计

热门文章

  1. 为什么刹车热了会失灵_急!我的刹车为什么突然不管用了?
  2. 利用CUDA查看多张显卡可用显存和总显存大小
  3. 计算机的休眠和睡眠时间在那调,电脑休眠状态跟睡眠状态的区别及唤醒方法
  4. Arduino之读取温度传感器并串口显示
  5. 机器学习复盘(2):机器学习主要应用场景及典型案例
  6. 基于计算机底层基础设计一个高性能的单机管理主机的心跳服务
  7. python读取数据集csv文件_读取CSV文件并使用python提取所需的数据量
  8. MTTF、MTBF与MTRF
  9. UI设计师是一群什么样的人?
  10. 制作往图片里插入视频,视频添加到图片上播放