Python從Oracle數(shù)據(jù)庫中獲取數(shù)據(jù)——fetchall(),fetchone(),fetchmany()函數(shù)功能分析
一、fetchall(),fetchone(),fetchmany()簡單介紹
1、fetchall()函數(shù),它的返回值是多個元組,即返回多個行記錄,如果沒有結(jié)果,返回的是()
2、fetchone()函數(shù),它的返回值是單個的元組,也就是一行記錄,如果沒有結(jié)果,那就會返回None,每次向后抓取一條記錄
3、 fetchmany()函數(shù),返回多個元組,返回多條記錄(row),需要指定具體返回多少個記錄。如fetchmany(2) 返回兩條記錄,默認(rèn)則為1
二、fetchall(),fetchone(),fetchmany()詳細(xì)介紹
下圖是我這次學(xué)習(xí)使用的數(shù)據(jù)截圖:然后我使用python連接到Oracle數(shù)據(jù)庫,獲取游標(biāo),編寫sql語句。
import cx_Oracle
conn = cx_Oracle.connect('yoyo', '123456', '127.0.0.1:1521/yoyo')
# 使用cursor()方法獲取操作游標(biāo)
cursor = conn.cursor()
# 通過游標(biāo)cur操作execute()方法可以寫入純sql語句
s = cursor.execute("""select * from BRAND order by ID asc""")
下面進(jìn)入正題,先使用fetchall()函數(shù)并查看執(zhí)行結(jié)果。代碼如下:
# fetchall()函數(shù),它的返回值是多個元組,即返回多個行記錄,如果沒有結(jié)果,返回的是()
result1 = s.fetchall()
print(result1)
執(zhí)行結(jié)果如下:
看到執(zhí)行結(jié)果如我們預(yù)想的一樣,按ID值升序排列獲取全部5條記錄,就像這個函數(shù)的名字一樣,fetchall()就是抓取所有數(shù)據(jù)。
接著,我們再接著加入fetchone()函數(shù),代碼如圖所示:
import cx_Oracle
# 執(zhí)行以上代碼,如果沒有產(chǎn)生錯誤,表明安裝成功
# 連接數(shù)據(jù)庫,下面括號里內(nèi)容根據(jù)自己實際情況填寫
conn = cx_Oracle.connect('yoyo', '123456', '127.0.0.1:1521/yoyo')
# 使用cursor()方法獲取操作游標(biāo)
cursor = conn.cursor()
# 通過游標(biāo)cur操作execute()方法可以寫入純sql語句
s = cursor.execute("""select * from BRAND order by ID asc""")
# fetchall()函數(shù),它的返回值是多個元組,即返回多個行記錄,如果沒有結(jié)果,返回的是()
result1 = s.fetchall()
print(result1)
# fetchone()函數(shù),它的返回值是單個的元組,也就是一行記錄,如果沒有結(jié)果,那就會返回None,每次向后抓取一條記錄
result2 = s.fetchone()
result3 = s.fetchone()
print(result2)
print(result3)
執(zhí)行結(jié)果如下所示:我們看到因為fetchall()已經(jīng)把全部5條數(shù)據(jù)都抓取了,所以再使用fetchone()抓取數(shù)據(jù),就會為空,和介紹中的功能完全符合,返回了None
這次我們注釋掉fetchall()函數(shù),再次執(zhí)行如下代碼:
import cx_Oracle
# 執(zhí)行以上代碼,如果沒有產(chǎn)生錯誤,表明安裝成功
# 連接數(shù)據(jù)庫,下面括號里內(nèi)容根據(jù)自己實際情況填寫
conn = cx_Oracle.connect('yoyo', '123456', '127.0.0.1:1521/yoyo')
# 使用cursor()方法獲取操作游標(biāo)
cursor = conn.cursor()
# 通過游標(biāo)cur操作execute()方法可以寫入純sql語句
s = cursor.execute("""select * from BRAND order by ID asc""")
# fetchall()函數(shù),它的返回值是多個元組,即返回多個行記錄,如果沒有結(jié)果,返回的是()
# result1 = s.fetchall()
# print(result1)
# fetchone()函數(shù),它的返回值是單個的元組,也就是一行記錄,如果沒有結(jié)果,那就會返回None,每次向后抓取一條記錄
result2 = s.fetchone()
result3 = s.fetchone()
print(result2)
print(result3)
執(zhí)行結(jié)果如下所示:
我們看到這次fetchone()函數(shù)抓取到了數(shù)據(jù),根據(jù)fetchone()函數(shù)的功能所說,它是每次返回一個元組,執(zhí)行一次就向后抓取一次數(shù)據(jù),所以執(zhí)行兩次的結(jié)果result2和result3獲取到的是不同的值。
接著,我們在后面再加入fetchmany()函數(shù),代碼如圖所示:
import cx_Oracle
# 執(zhí)行以上代碼,如果沒有產(chǎn)生錯誤,表明安裝成功
# 連接數(shù)據(jù)庫,下面括號里內(nèi)容根據(jù)自己實際情況填寫
conn = cx_Oracle.connect('yoyo', '123456', '127.0.0.1:1521/yoyo')
# 使用cursor()方法獲取操作游標(biāo)
cursor = conn.cursor()
# 通過游標(biāo)cur操作execute()方法可以寫入純sql語句
s = cursor.execute("""select * from BRAND order by ID asc""")
# fetchall()函數(shù),它的返回值是多個元組,即返回多個行記錄,如果沒有結(jié)果,返回的是()
# result1 = s.fetchall()
# print(result1)
# fetchone()函數(shù),它的返回值是單個的元組,也就是一行記錄,如果沒有結(jié)果,那就會返回None,每次向后抓取一條記錄
result2 = s.fetchone()
result3 = s.fetchone()
print(result2)
print(result3)
# fetchmany()函數(shù),返回多個元組,返回多條記錄(row),需要指定具體返回多少個記錄。如fetchmany(2) 返回兩條記錄,默認(rèn)則為1
result4 = s.fetchmany(3)
print(result4)
執(zhí)行結(jié)果如下圖所示:
在代碼中,fetchmany()函數(shù)填寫的獲取數(shù)據(jù)的條數(shù)為3,所以運行結(jié)果的最后一行是最后三條記錄,一起被顯示出來。值得注意的是,fetchmany()函數(shù)是接著fetchone()函數(shù)抓取數(shù)據(jù)的,并不是又從回到頭開始抓取數(shù)據(jù),這在編程時應(yīng)該被注意。文章來源:http://www.zghlxwxcb.cn/news/detail-612929.html
以上是我的學(xué)習(xí)分享,有不對的地方敬請讀者指正。文章來源地址http://www.zghlxwxcb.cn/news/detail-612929.html
到了這里,關(guān)于Python從Oracle數(shù)據(jù)庫中獲取數(shù)據(jù)——fetchall(),fetchone(),fetchmany()函數(shù)功能分析的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!