没有合适的资源?快使用搜索试试~ 我知道了~
首页解决pymysql cursor.fetchall() 获取不到数据的问题
资源详情
资源评论
资源推荐
解决解决pymysql cursor.fetchall() 获取不到数据的问题获取不到数据的问题
主要介绍了解决pymysql cursor.fetchall() 获取不到数据的问题,具有很好的参考价值,希望对大家有所帮助。
一起跟随小编过来看看吧
1.之前的写法(不报错):
data = cursor.fetchall()
data_name = data[0]['task_type']
2.简洁的写法(报错):
data = cursor.fetchall()[0]['task_type']
用 2 的写法报错之后,一度怀疑是数据库出了问题。不服气用pycharm 的watch功能进行调试,更是错上加错。
错误原因:错误原因:
cursor.fetchall() 相当于从数据库取数据,但是取完就没有了,再下一行继续 cursor.fetchall(),取到的就只是空列表。他和变
量不一样,不能重复查询,推荐第一种写法,将数据取出来之后,放到一个变量里,再进行处理。
用watch 功能更是添乱。
补充知识:补充知识:VScode pymysql模块模块fetchall方法取不到值方法取不到值bug
这个问题是个很神奇的东西,简单来说就是用fetchall()取cusor中的_rows的值,明明_rows里面存在值,但依然取出来为空,
看了一会pymysql里cursor里的源码,大概地了解到这个bug的表面原因:
原因:原因:
cursor,在其内部有个rownumber的变量,作用大概就是“游标”的意思吧,如果你是用fetchone()方法,取出来的就是第一个
数,然后将游标移到下一位,下次去取就是从游标的位置开始还不是从_rows里的起始位置开始,fetchmany()同理,另
外,cursor中还提供了直接移动游标的方法,也就是scroll方法,接下来,我们具体分析下fetchall的代码:
def fetchall(self):
"""Fetch all the rows"""
self._check_executed()
if self._rows is None:
return ()
if self.rownumber:
result = self._rows[self.rownumber:]
weixin_38591011
- 粉丝: 4
- 资源: 919
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- RTL8188FU-Linux-v5.7.4.2-36687.20200602.tar(20765).gz
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
- SPC统计方法基础知识.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0