隔着超薄肉丝进入小说_男女刺激性视频大片_女教师的诱波多野结衣_一级欧美过瘾大片

當前位置: 首頁 / 技術干貨 / 正文
好程序員Python培訓分享簡述fetchone()函數

2020-10-30

Python培訓

  fetchone()函數報'NoneType' object is not subscriptable的錯誤今天有人向好程序員Python培訓老師請教一道python操作mysql的題,我也是差一點掉坑里去了。題是這樣的:python操作數據庫,實現用戶的注冊登陸功能。其中最主要的是數據庫的存入和讀取。

Python2

其中一段代碼如下:

#查詢與用戶名對應的密碼

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說明對比的兩個值中有一個是Noneself.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():將只取最上面的diyi條結果,返回單個元組如('id','title'),然后多次使用cursor.fetchone(),依次取得下一條結果,直到為空。

cursor.fetchall() :將返回所有結果,返回二維元組,如(('id','title'),('id','title')),

如果select本身取的時候只有一條數據時:

cursor.fetchone():將只返回一條結果,返回單個元組如('id','title')

cursor.fetchall() :也將返回所有結果,返回二維元組,如(('id','title'),),

備注:其中的idtitle為具體的內容

pythonmysql在使用fetchall或者是fetchone時,綜合起來講,fetchall返回二維元組(元組中含有元組),fetchone只返回一維元組。

好程序員公眾號

  • · 剖析行業發展趨勢
  • · 匯聚企業項目源碼

好程序員開班動態

More+
  • HTML5大前端 <高端班>

    開班時間:2021-04-12(深圳)

    開班盛況

    開班時間:2021-05-17(北京)

    開班盛況
  • 大數據+人工智能 <高端班>

    開班時間:2021-03-22(杭州)

    開班盛況

    開班時間:2021-04-26(北京)

    開班盛況
  • JavaEE分布式開發 <高端班>

    開班時間:2021-05-10(北京)

    開班盛況

    開班時間:2021-02-22(北京)

    開班盛況
  • Python人工智能+數據分析 <高端班>

    開班時間:2021-07-12(北京)

    預約報名

    開班時間:2020-09-21(上海)

    開班盛況
  • 云計算開發 <高端班>

    開班時間:2021-07-12(北京)

    預約報名

    開班時間:2019-07-22(北京)

    開班盛況
IT培訓IT培訓
在線咨詢
IT培訓IT培訓
試聽
IT培訓IT培訓
入學教程
IT培訓IT培訓
立即報名
IT培訓

Copyright 2011-2023 北京千鋒互聯科技有限公司 .All Right 京ICP備12003911號-5 京公網安備 11010802035720號