欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python操作數(shù)據(jù)庫獲取結果之fetchone和fetchall的區(qū)別說明

 更新時間:2021年04月09日 08:36:48   作者:蒲公英上的塵埃  
這篇文章主要介紹了python操作數(shù)據(jù)庫獲取結果之fetchone和fetchall的區(qū)別說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

每次使用python獲取查詢結果的時候,都會糾結一段時間到底用fetchone和fetchall,用不好容易報錯,關鍵在于沒有搞清楚它們之間的區(qū)別和使用場景。

fetchone與fetchall區(qū)別

環(huán)境:python3中

fetchone

不管查詢結果是多條數(shù)據(jù)還是單條數(shù)據(jù),使用fetchone得到的始終是一個元組。

如果查詢結果是單條數(shù)據(jù):fetchone得到的單條數(shù)據(jù)的元組;

如果查詢結果是多條數(shù)據(jù):fetchone默認是結果中的第一條數(shù)據(jù)構成的元組;

這就決定了如果需要取元組中的數(shù)值,需要使用cur.fetchone[0]

fetchall

不管查詢結果是多條數(shù)據(jù)還是單條數(shù)據(jù),使用fetchall得到的始終是一個由元組組成的列表。

如果查詢結果是單條數(shù)據(jù):fetchall得到的是由單個元組組成的列表,列表內(nèi)是有單條數(shù)據(jù)組成的元組,即列表包含元組;

如果查詢結果是多條數(shù)據(jù):fetchall得到的是由多個元組組成的列表;

這就決定了如果需要取元組中的數(shù)值,需要使用cur.fetchone[0][0]

使用場景

一般來說,查詢結果集是單條數(shù)據(jù)的,使用fetchone獲取數(shù)據(jù)

一般來說,查詢結果集是多條數(shù)據(jù)的,使用fetchall獲取數(shù)據(jù)

簡單實例

import cx_Oracle
conn = cx_Oracle.connect("用戶名/密碼@數(shù)據(jù)庫地址")
cur = conn.cursor()
sql_3 = "select id from CZEPT_BSDT t WHERE name='{}'".format("基本支出調(diào)劑")
cur.execute(sql_3)
result_3 = cur.fetchone() # 單條數(shù)據(jù)結果集
print(result_3)  # (1,)
print(type(result_3)) # <class 'tuple'>
result_3= result_3[0] 
print(result_3)  # 1
print(type(result_3)) # <class 'int'>
print("*" * 50)
sql_2 = "select * from CZEPT_BSDT "  
cur.execute(sql_2)
result_2 = cur.fetchall()  # 多條數(shù)據(jù)結果集
print(result_2)  # [(1,'基本支出調(diào)劑'),(3,'銀行賬戶審批'),(5,'項目支出調(diào)劑')]
print(type(result_2))  # <class 'list'>
result_2= result_2[0][0]
print(result_2)   # 1
print(type(result_2))  # <class 'int'>

注意事項

對于使用fetchone和fetchall獲取到的結果,最好使用之前先判斷非空,否則在存在空值的情況下獲取元組內(nèi)的數(shù)據(jù)時,會報“超出索引”的異常。多次踩雷坑。

import cx_Oracle
connection = cx_Oracle.connect('用戶名/密碼@數(shù)據(jù)庫地址')
cur = connection.cursor()
for j in data_list:
    sql = "select guid from jczl.division where name='{}'".format(j['DIVISIONNAME'])
    cur.execute(sql)
    result = cur.fetchone()
    # 因為存在歸口處室為空,所以切片的時候總是報超出索引范圍,搞了好久
    if result is not None:
        j['DIVISIONGUID'] = str(result[0])

補充:python DB.fetchall()--獲取數(shù)據(jù)庫所有記錄列表

查詢到的數(shù)據(jù)格式為列表:

多個元素的列表:

單個元素的列表:

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

相關文章

  • Python實現(xiàn)抓取百度搜索結果頁的網(wǎng)站標題信息

    Python實現(xiàn)抓取百度搜索結果頁的網(wǎng)站標題信息

    這篇文章主要介紹了Python實現(xiàn)抓取百度搜索結果頁的網(wǎng)站標題信息,本文使用BeautifulSoup來解析HTML,需要的朋友可以參考下
    2015-01-01
  • python文件操作之目錄遍歷實例分析

    python文件操作之目錄遍歷實例分析

    這篇文章主要介紹了python文件操作之目錄遍歷的方法,以實例形式較為詳細的分析了目錄遍歷所需要用到的相關函數(shù)與使用技巧,需要的朋友可以參考下
    2015-05-05
  • Python MNIST手寫體識別詳解與試練

    Python MNIST手寫體識別詳解與試練

    MNIST(官方網(wǎng)站)是非常有名的手寫體數(shù)字識別數(shù)據(jù)集,在Tensorflow的官方網(wǎng)站里,第一個就拿它來做實戰(zhàn)講解,咱們也以此作為開始的項目
    2021-11-11
  • python目錄與文件名操作例子

    python目錄與文件名操作例子

    這篇文章主要介紹了python目錄與文件名操作例子,需要的朋友可以參考下
    2016-08-08
  • Python 學習教程之networkx

    Python 學習教程之networkx

    networkx是Python的一個包,用于構建和操作復雜的圖結構,提供分析圖的算法。對Python networkx相關知識感興趣的朋友跟隨小編一起看看吧
    2019-04-04
  • Python unittest如何生成HTMLTestRunner模塊

    Python unittest如何生成HTMLTestRunner模塊

    這篇文章主要介紹了Python unittest如何生成HTMLTestRunner模塊,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-09-09
  • python之信息加密題目詳解

    python之信息加密題目詳解

    這篇文章主要介紹了python之信息加密題目詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,,需要的朋友可以參考下
    2019-06-06
  • pyqt5實現(xiàn)井字棋的示例代碼

    pyqt5實現(xiàn)井字棋的示例代碼

    這篇文章主要給大家介紹了關于pyqt5實現(xiàn)井字棋的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • Python使用GitPython操作Git版本庫的方法

    Python使用GitPython操作Git版本庫的方法

    這篇文章主要介紹了Python使用GitPython操作Git版本庫的方法,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-02-02
  • Python range函數(shù)之生成器函數(shù)的示例

    Python range函數(shù)之生成器函數(shù)的示例

    這篇文章主要介紹了Python range函數(shù)之生成器函數(shù)的示例,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-12-12

最新評論