最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

解決pymysql cursor.fetchall() 獲取不到數(shù)據(jù)的問題

 更新時間:2020年05月15日 14:30:15   作者:匡威~萬斯  
這篇文章主要介紹了解決pymysql cursor.fetchall() 獲取不到數(shù)據(jù)的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

1.之前的寫法(不報錯):

data = cursor.fetchall()
data_name = data[0]['task_type']

2.簡潔的寫法(報錯):

data = cursor.fetchall()[0]['task_type']

用 2 的寫法報錯之后,一度懷疑是數(shù)據(jù)庫出了問題。不服氣用pycharm 的watch功能進行調(diào)試,更是錯上加錯。

錯誤原因:

cursor.fetchall() 相當于從數(shù)據(jù)庫取數(shù)據(jù),但是取完就沒有了,再下一行繼續(xù) cursor.fetchall(),取到的就只是空列表。他和變量不一樣,不能重復查詢,推薦第一種寫法,將數(shù)據(jù)取出來之后,放到一個變量里,再進行處理。

用watch 功能更是添亂。

補充知識:VScode pymysql模塊fetchall方法取不到值bug

這個問題是個很神奇的東西,簡單來說就是用fetchall()取cusor中的_rows的值,明明_rows里面存在值,但依然取出來為空,看了一會pymysql里cursor里的源碼,大概地了解到這個bug的表面原因:

原因:

cursor,在其內(nèi)部有個rownumber的變量,作用大概就是“游標”的意思吧,如果你是用fetchone()方法,取出來的就是第一個數(shù),然后將游標移到下一位,下次去取就是從游標的位置開始還不是從_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:]
  else:
   result = self._rows
  self.rownumber = len(self._rows)
  return result

代碼簡潔明了,如果_rows里面沒值,確實是在數(shù)據(jù)庫中沒查到,那就返回空,如果有游標,那從游標位置開始取,否則,直接返回_rows整個結果集,然后將游標移到最后,問題將出在這,我可以確定每次執(zhí)行完查詢以后,我都關閉了游標,未關閉db連接,并且,不會針對同一次查詢多次fetchall(),但是在執(zhí)行的時候,有時候即使是第一次fetchall()方法,游標依然在最后,然后我給cursor中所有的rownumber的賦值語句全部加了斷點,這些斷點都沒執(zhí)行的情況下,rownumber的值依然變了,這足以確定不是pymysql的代碼問題

解決方案:

這就更能確定是vscode的編譯模塊的問題了,新建一個py文件,將原代碼原封不動的復制過去,再執(zhí)行,竟然將這么好了?!就是這么神奇,什么代碼沒動,換個文件將好了,然后,這個bug是偶發(fā)性的,并不是每次fetchall()都會出現(xiàn)這種情況

以上這篇解決pymysql cursor.fetchall() 獲取不到數(shù)據(jù)的問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Python 實現(xiàn)平臺類游戲添加跳躍功能

    Python 實現(xiàn)平臺類游戲添加跳躍功能

    這篇文章主要介紹了Python 實現(xiàn)平臺類游戲添加跳躍功能,,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • Python實現(xiàn)結構體代碼實例

    Python實現(xiàn)結構體代碼實例

    這篇文章主要介紹了Python實現(xiàn)結構體代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-02-02
  • Python練習之ORM框架

    Python練習之ORM框架

    這篇文章主要介紹了Python練習之ORM框架,通過使用SQLObject框架操作MySQL數(shù)據(jù)庫展開文章主題詳細內(nèi)容,具有一定的參考價值,需要的朋友可以參考一下
    2022-06-06
  • python任務調(diào)度實例分析

    python任務調(diào)度實例分析

    這篇文章主要介紹了python任務調(diào)度實現(xiàn)方法,實例分析了任務調(diào)度的原理與Python實現(xiàn)方法,需要的朋友可以參考下
    2015-05-05
  • 詳解Python如何編寫類型提示

    詳解Python如何編寫類型提示

    為了提高代碼的可讀性、可維護性,Python 在 PEP 484 中引入了類型提示( type hinting),它是 Python 中一個可選但非常有用的功能,可以使代碼更易于閱讀和調(diào)試,下面我們就來學習一下如何編寫類型提示吧
    2023-12-12
  • Python安裝whl文件過程圖解

    Python安裝whl文件過程圖解

    這篇文章主要介紹了Python安裝whl文件過程圖解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-02-02
  • PyCharm使用Docker鏡像搭建Python開發(fā)環(huán)境

    PyCharm使用Docker鏡像搭建Python開發(fā)環(huán)境

    這篇文章主要介紹了PyCharm使用Docker鏡像搭建Python開發(fā)環(huán)境,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-12-12
  • python中prettytable庫的使用方法

    python中prettytable庫的使用方法

    prettytable是Python的一個第三方工具庫,用于創(chuàng)建漂亮的ASCII表格,本文主要介紹了python中prettytable庫的使用方法,使用prettytable可以輕松地將數(shù)據(jù)可視化為表格,感興趣的可以了解一下
    2023-08-08
  • 解決windows上安裝tensorflow時報錯,“DLL load failed: 找不到指定的模塊”的問題

    解決windows上安裝tensorflow時報錯,“DLL load failed: 找不到指定的模塊”的問題

    這篇文章主要介紹了解決windows上安裝tensorflow時報錯,“DLL load failed: 找不到指定的模塊”的問題,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • Python如何使用帶有?for?循環(huán)的?Lambda?函數(shù)

    Python如何使用帶有?for?循環(huán)的?Lambda?函數(shù)

    這篇文章主要介紹了如何在?Python?中使用帶有?for?循環(huán)的?Lambda?函數(shù),使用?Lambda?函數(shù)配合?for?循環(huán)可以讓代碼變得更加簡潔,但需要注意的是,Lambda?函數(shù)在語法上有一些限制,如果需要更復雜的邏輯,還需要使用普通函數(shù),感興趣的朋友跟隨小編一起學習吧
    2023-05-05

最新評論

左贡县| 依安县| 兴海县| 太仓市| 广安市| 许昌县| 远安县| 府谷县| 峨边| 峨边| 突泉县| 新龙县| 沾益县| 新巴尔虎右旗| 什邡市| 堆龙德庆县| 堆龙德庆县| 呼图壁县| 栖霞市| 乌鲁木齐市| 临洮县| 宁南县| 象山县| 嵩明县| 磐石市| 九龙县| 安福县| 安徽省| 乌兰察布市| 商南县| 定陶县| 长子县| 安宁市| 都昌县| 吉林市| 镇坪县| 忻城县| 新河县| 本溪| 焦作市| 七台河市|