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

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

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

1.之前的寫法(不報(bào)錯(cuò)):

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

2.簡潔的寫法(報(bào)錯(cuò)):

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

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

錯(cuò)誤原因:

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

用watch 功能更是添亂。

補(bǔ)充知識(shí):VScode pymysql模塊fetchall方法取不到值bug

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

原因:

cursor,在其內(nèi)部有個(gè)rownumber的變量,作用大概就是“游標(biāo)”的意思吧,如果你是用fetchone()方法,取出來的就是第一個(gè)數(shù),然后將游標(biāo)移到下一位,下次去取就是從游標(biāo)的位置開始還不是從_rows里的起始位置開始,fetchmany()同理,另外,cursor中還提供了直接移動(dòng)游標(biāo)的方法,也就是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í)是在數(shù)據(jù)庫中沒查到,那就返回空,如果有游標(biāo),那從游標(biāo)位置開始取,否則,直接返回_rows整個(gè)結(jié)果集,然后將游標(biāo)移到最后,問題將出在這,我可以確定每次執(zhí)行完查詢以后,我都關(guān)閉了游標(biāo),未關(guān)閉db連接,并且,不會(huì)針對同一次查詢多次fetchall(),但是在執(zhí)行的時(shí)候,有時(shí)候即使是第一次fetchall()方法,游標(biāo)依然在最后,然后我給cursor中所有的rownumber的賦值語句全部加了斷點(diǎn),這些斷點(diǎn)都沒執(zhí)行的情況下,rownumber的值依然變了,這足以確定不是pymysql的代碼問題

解決方案:

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

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

相關(guān)文章

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

    Python 實(shí)現(xiàn)平臺(tái)類游戲添加跳躍功能

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

    Python實(shí)現(xiàn)結(jié)構(gòu)體代碼實(shí)例

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

    Python練習(xí)之ORM框架

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

    python任務(wù)調(diào)度實(shí)例分析

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

    詳解Python如何編寫類型提示

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

    Python安裝whl文件過程圖解

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

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

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

    python中prettytable庫的使用方法

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

    解決windows上安裝tensorflow時(shí)報(bào)錯(cuò),“DLL load failed: 找不到指定的模塊”的問題

    這篇文章主要介紹了解決windows上安裝tensorflow時(shí)報(bào)錯(cuò),“DLL load failed: 找不到指定的模塊”的問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    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ù)在語法上有一些限制,如果需要更復(fù)雜的邏輯,還需要使用普通函數(shù),感興趣的朋友跟隨小編一起學(xué)習(xí)吧
    2023-05-05

最新評論

呼伦贝尔市| 鹤山市| 鄢陵县| 偏关县| 商城县| 崇信县| 铁岭市| 云龙县| 上蔡县| 太白县| 宁夏| 桂林市| 龙井市| 泰州市| 南华县| 陕西省| 巴里| 湖州市| 富蕴县| 桃园县| 玉田县| 临洮县| 青州市| 辉南县| 永昌县| 桂平市| 城步| 定远县| 汽车| 修水县| 阿合奇县| 商丘市| 镇安县| 利川市| 铁岭市| 老河口市| 临泽县| 阳城县| 南陵县| 民勤县| 尼玛县|