脚本宝典收集整理的这篇文章主要介绍了扣丁学堂Python培训简述fetchone()函数,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
fetchone()函数报'NoneTyPE' object is not subscriptable的错误今天有人向扣丁学堂Python培训老师请教一道python操作MySQL的题,我也是差一点掉坑里去了。题是这样的:python操作数据库,实现用户的注册登陆功能。其中最主要的是数据库的存入和读取。
其中一段代码如下:
查询与用户名对应的密码
SQL = "select hash_password From user where username ='{}'".format(self.username)
self.cursor.execute(sql)
输出查询结果
PRint(self.cursor.fetchone()[0])
print(self.passwd)
对比,查询结果与加密后的密码
if self.cursor.fetchone()[0] == self.passwd:
print('登录成功')
else:
print('请输入正确的密码')
乍一看没什么错,但是执行报错了,
e10adc3949ba59abbe56e057f20f883e
e10adc3949ba59abbe56e057f20f883e
rl.login()
File "xxxxxx", line 314,in LOGin
if self.cursor.fetchone()[0] == self.passwd:
TypeError: 'NoneType' object is not subscriptable
怎么回事呢?明明输出的两个密码是一样的,怎么对比出错呢,而且报错也很奇怪,NoneType说明对比的两个值中有一个是None,self.passwd排除,那只能说self.cursor.fetchone()[0]是None,我将if注释了,再次print()输出一下self.cursor.fetchone()[0],果然又报错了
print(self.cursor.fetchone()[0])
TypeError: 'NoneType' object is not subscriptable
这下捉急了,百度呗,查了半天也没查到什么。过了一会才想起如果mysql执行语句结果的查询集只有一行数据,是不能调用两次self.cursor.fetchone()的,也就是说,第二次调用根本不可能有结果。那我把代码改一下好了。
sql = "select hash_password from user where username ='{}'".format(self.username)
self.cursor.execute(sql)
sql_password = self.cursor.fetchone()[0]
print(sql_password)
print(self.passwd)
if sql_password == self.passwd:
print('登录成功')
else:
print('请输入正确的密码')
OK,成功了,没报错了,可真不容易。
用法如下所示:
fetchone()用法:
cur.execute("select host,user,password from user where user='%s'" %acc)
jilu = cur.fetchone() ##此时 通过 jilu[0],jilu[1],jilu[2]可以依次访问host,user,password
fetchall()用法:
cur.execute("select * from user")
如果select本身取的时候有多条数据时:
cursor.fetchone():将只取最上面的第一条结果,返回单个元组如('id','tITle'),然后多次使用cursor.fetchone(),依次取得下一条结果,直到为空。
cursor.fetchall() :将返回所有结果,返回二维元组,如(('id','title'),('id','title')),
如果select本身取的时候只有一条数据时:
cursor.fetchone():将只返回一条结果,返回单个元组如('id','title')。
cursor.fetchall() :也将返回所有结果,返回二维元组,如(('id','title'),),
备注:其中的id和title为具体的内容
python在mysql在使用fetchall或者是fetchone时,综合起来讲,fetchall返回二维元组(元组中含有元组),fetchone只返回一维元组。
最后想要了解更多关于Python和人工智能方面内容的小伙伴,请关注扣丁学堂Python培训官网、微信等平台,扣丁学堂IT职业在线学习教育平台为您提供权威的Python开发环境搭建视频,Python培训后的前景无限,行业薪资和未来的发展会越来越好的,扣丁学堂老师精心推出的Python视频教程定能让你快速掌握Python从入门到精通开发实战技能。
以上是脚本宝典为你收集整理的扣丁学堂Python培训简述fetchone()函数全部内容,希望文章能够帮你解决扣丁学堂Python培训简述fetchone()函数所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。