Python数据库SQLite中的fetchone()、fetchMany()、fetchall()函数

2023-10-30

      今天在练习python数据库的查询操作时,使用fetchone()、fetchMany()、fetchall()函数,出现了一些奇怪的现象,现在做如下记录。

      我想在同一个代码块中,使用fetchone()查询一条信息,使用fetchmany(3)查询3条信息,fetchall()查询全部信息,查询的对应代码段如下:

#14.3   使用不同的方法查询用户信息
conn = sql.connect(r"D:\_spring\mirsoft.db")
cursor = conn.cursor()

cursor.execute('select * from user')

print("======fetchone()======")
result1 = cursor.fetchone()
print(result1)

print("======fetchmany()======")
result2 = cursor.fetchmany(3)
print(result2)

print("======fetchall()======")
result3 = cursor.fetchall()
print(result3)

cursor.close()
conn.commit()
conn.close()

      然而并没有想要的结果。

#理想的结果
======fetchone()======
(1, 'Menny')

======fetchmany(3)======
[(1, 'Menny'), (2, 'Liming'), (3, 'Jydius')]

======fetchall()======
[(1, 'Menny'), (2, 'Liming'), (3, 'Jydius'), (4, 'spring')]


#实际的结果
======fetchone()======
(1, 'Menny')

======fetchmany()======
[(2, 'Liming'), (3, 'Jydius'), (4, 'spring')]

======fetchall()======
[]

       原因:游标cursor如同C中文件的指针一样,每次都会移动到一定的位置,如果不指定它返回开头,那么就会沿着当前位置继续下一次的移动。所以,在以上代码中,fetchone得到的是第一个序号(1,“jenny”),紧接着的fetchmany(3)得到的是从第二个序号起的下面三个序号,即[(2, 'Liming'), (3, 'Jydius'), (4, 'spring')],再执行fetchall时,游标已经移动到了user表的末尾,没有记录可以查询,所以返回的是空值。

      修改代码如下:

#14.3   使用不同的方法查询用户信息
conn = sql.connect(r"D:\_spring\spring_Python\exp_14_option_database\mirsoft.db")
cursor = conn.cursor()

cursor.execute('select * from user')

print("======fetchone()======")
result1 = cursor.fetchone()
print(result1)

print("\n======fetchmany(3)======")
cursor.execute('select * from user')    #每一次都让游标返回user表的开头
result2 = cursor.fetchmany(3)
print(result2)

print("\n======fetchall()======")
cursor.execute('select * from user')    #每一次都让游标返回user表的开头
result3 = cursor.fetchall()
print(result3)

cursor.close()
conn.commit()
conn.close()

      得到如下结果:

======fetchone()======
(1, 'Menny')

======fetchmany(3)======
[(1, 'Menny'), (2, 'Liming'), (3, 'Jydius')]

======fetchall()======
[(1, 'Menny'), (2, 'Liming'), (3, 'Jydius'), (4, 'spring')]

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python数据库SQLite中的fetchone()、fetchMany()、fetchall()函数 的相关文章

随机推荐

  • 今天给一个shopify网站修改了一下

    今天的客户是浙江的 他们没有设计稿 给了我一个需要模仿的网站 要求是把自己的商品详情页搞成和对标网站一样的 这个事情两天给搞定了 他们很满意 对标网站是一个卖狗粮的 他们是卖玩具的 哈哈 但是因为没有设计稿 修修补补了很多地方 还要求在页面
  • 装载问题(回溯法)

    1 具体问题 一批集装箱共n个要装上2艘载重量分别为c1和c2的轮船 其中集装箱i的重量为Wi且W1 W2 Wn lt c1 c2 试确定一个合理的装载方案使这n个集装箱装上这两艘轮船 2 问题分析 容易去证明 如果一个装载问题有解 则采用
  • 什么软件做可视化大屏最简单、最快?

    做可视化大屏的工具有很多 但要说什么软件做可视化大屏最简单 最快 那必然是BI系统 特别是国产BI系统奥威BI 奥威BI系统能提供大量的模板功能 精简操作 提高效率 而且采用的是零编程 即点击 拖拉拽这样的方式来制作报表 使用门槛低 即使是
  • ros1 bag to ros2 bag play

    有个问题是 ros1格式的bag需要转到ros2格式的bag 怎么弄 需要注意的是 这里只能提供标准信息的rosbag转换 如果带有自定义msg的rosbag 应该是不可以的 请注意一下 解决办法 安装依赖 sudo apt install
  • 【IDEA】对于IDEA出现程序包无法找到或者js代码无法加载问题的6种解决方案

    前言 在平时做项目时 我们有时候会出现各种奇奇怪怪的bug 标题所列举的这两种情况我都遇到过 搜的博客解决方案也很多都是一样的 今天我就给大家汇总一下解决方案 一 如果你是使用maven管理项目 在idea右上角能够看到Maven 点击Ma
  • java 比较两个类_Java 中有没有直接可以判断两个类是否相同的方法?

    展开全部 java没有直接判e5a48de588b662616964757a686964616f31333337623436断两个雷是否相同 但提供了如下方法 1 如果说两个对象的判断可以使用 equals 或者 2 如果判断对象是否某个类
  • JVM知识点(二)

    1 G1垃圾收集器 XX MaxGCPauseMillis 10 G1的参数 表示在任意1s时间内 停顿时间不能超过10ms G1将堆切分成很多小堆区 Region 每一个Region可以是Eden Survivor或Old区 这些区在内存
  • 三种memcached的JAVA客户端比较

    Memcached客户端程序 Memcached的java客户端已经存在三种了 官方提供的基于传统阻塞io由Greg Whalin维护的客户端 DustinSallings实现的基于java nio的Spymemcached XMemcac
  • Python3,我用这种方式讲解python模块,80岁的奶奶都说能理解。建议收藏 ~ ~

    Python模块讲解 1 引言 2 python模块详解 2 1 含义 2 2 代码示例 2 3 进阶 3 总结 1 引言 小屌丝 鱼哥 你看天上的月亮越来越圆了 小鱼 唉 又是一年团圆夜 又是一年中秋节 小屌丝 嘿嘿 可不滴 这个中秋 你
  • GIT error: object file is empty?

    how to fix GIT error object file is empty 前几天在使用git status 产生了一个错误 经过多方搜索 找到一篇文章 现简述一下大意 原文 开始 当我尝试提交一个修改时 我得到了一个错误 erro
  • Servlet 规范和 Servlet 容器

    如果大家觉得文章有错误内容 欢迎留言或者私信讨论 前引 通过之前的学习我们知道浏览器发给服务器的 HTTP 请求在服务器端需要调用服务端的程序来处理 也就是我们写的 Java 类 一般来说不同请求对应不同的 Java 类 那么问题来了 HT
  • 解决vue中样式不起作用:样式穿透/深度选择器(/deep/)

    项目场景 提示 这里简述项目相关背景 解决vue中样式不起作用 样式穿透 深度选择器 deep 原因分析 提示 这里填写问题的分析 原因1 组件内部使用组件 添加了scoped属性 原因2 动态引入html 也添加了scoped属性 原因3
  • 工作中PTO和OOO是什么意思?

    PTO paid time off 带薪休假 其实就是我们所说的请年假 OOO out of office 就是字面意思 不在办公室 推荐一篇商务英文缩写介绍 ASAP OOO FYI 你都看得懂嗎 步入職場 一定要會的50個 商用縮寫
  • UE4(一)- 源码分析起点

    06 21 2020 UE4源码分析的起点 UE4文件结构 UE4 Editor UE4 C 项目文件夹结构 UE4 源码分析的起点 项目中的main函数 UObject 继承树 1 Gameplay类 Objects Actors Com
  • Nodejs开发(二)-项目打包和运行

    在Nodejs开发 一 Windows搭建Node环境搭建nodejs环境之后 接着进行项目的打包和运行 1 npm run build prod 首先管理员方式打开cmd 然后cd到项目所在文件夹 执行命令npm run build pr
  • NOKIA 刷机 6680

    使用NOKIA最新的PC套件6 82版可以在线刷机了 必须为6 82版 下载地址 http nds1 nokia com files support global phones software Nokia PC Suite 682 rel
  • 小兔鲜儿 - 微信登录

    目录 微信登录 登录方式 静态结构 获取登录凭证 获取手机号码 微信登录接口 生产环境 模拟手机登录 开发环境 用户信息持久化存储 涉及知识点 微信授权登录 文件上传 Store 状态管理等 微信登录 微信小程序的开放能力 允许开发者获取微
  • u盘安装CentOS(linux)的步骤(含双系统)

    为了学习新的知识 决定给自己的神舟本子装上CentOS系统 于是乎就自己在网上搜了教程 然而自己在安装的过程中还是出现了小问题 尤其是为了进入图形安装界面花了我很大的力气 经过多次尝试终于成功 每次装系统我的本子都会受到摧残 o 为了能给想
  • vs2015中cuda提示<<<>>>需要输入表达式

    在vs2015中写cuda代码进行编译时发现在调用核的时候 lt lt lt gt gt gt 总是提示有错误 编译提示输入表达式 但是编译是通过的 我的这个文件类型是cuda文件 cu 因为在vs中使用的是c 的语法提示 所以这个地方总是
  • Python数据库SQLite中的fetchone()、fetchMany()、fetchall()函数

    今天在练习python数据库的查询操作时 使用fetchone fetchMany fetchall 函数 出现了一些奇怪的现象 现在做如下记录 我想在同一个代码块中 使用fetchone 查询一条信息 使用fetchmany 3 查询3条