您好,登錄后才能下訂單哦!
這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)怎么在python中使用sqlite3判斷cursor的結(jié)果是否為空,文章內(nèi)容豐富且以專(zhuān)業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
Python是一種編程語(yǔ)言,內(nèi)置了許多有效的工具,Python幾乎無(wú)所不能,該語(yǔ)言通俗易懂、容易入門(mén)、功能強(qiáng)大,在許多領(lǐng)域中都有廣泛的應(yīng)用,例如最熱門(mén)的大數(shù)據(jù)分析,人工智能,Web開(kāi)發(fā)等。
len(list(cursor))若是0則為空
import sqlite3 # CREATE db = sqlite3.connect("E:/Pycharm/workspace/django_test/user.db") db.execute("create table user(info primary key,flag,result )") db.execute("insert into user(info,flag,result) values('RikkaTakanashi','0','DarkFlameMaster')") db.commit() db.close() db = sqlite3.connect("E:/Pycharm/workspace/django_test/user.db") c=db.cursor() cursor=c.execute("select info,flag,result from user where info='123'") print(len(list(cursor)))
結(jié)果為0
db = sqlite3.connect("E:/Pycharm/workspace/django_test/user.db") c=db.cursor() cursor=c.execute("select info,flag,result from user where info='RikkaTakanashi'") print(len(list(cursor)))
結(jié)果為1
補(bǔ)充:python中的SQLite游標(biāo)(cursor)
我們知道關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)實(shí)質(zhì)是面向集合的,在Sqlite中并沒(méi)有一種描述表中單一記錄的表達(dá)形式,除非使用where 子句來(lái)限制只有一條記錄被選中。因此我們必須借助于游標(biāo)來(lái)進(jìn)行面向單條記錄的數(shù)據(jù)處理。由此可見(jiàn),游標(biāo)允許應(yīng)用程序?qū)Σ樵?xún)語(yǔ)句select 返回的行結(jié)果集中每一行進(jìn)行相同或不同的操作,而不是一次對(duì)整個(gè)結(jié)果集進(jìn)行同一種操作;它還提供對(duì)基于游標(biāo)位置而對(duì)表中數(shù)據(jù)進(jìn)行刪除或更新的能力;正是游標(biāo)把作為面向集合的數(shù)據(jù)庫(kù)管理系統(tǒng)和面向行的程序設(shè)計(jì)兩者聯(lián)系起來(lái),使兩個(gè)數(shù)據(jù)處理方式能夠進(jìn)行溝通。
游標(biāo)提供了一種對(duì)從表中檢索出的數(shù)據(jù)進(jìn)行操作的靈活手段,就本質(zhì)而言,游標(biāo)實(shí)際上是一種能從包括多條數(shù)據(jù)記錄的結(jié)果集中每次提取一條記錄的機(jī)制。游標(biāo)總是與一條SQL 選擇語(yǔ)句相關(guān)聯(lián)。因?yàn)橛螛?biāo)由結(jié)果集(可以是零條、一條或由相關(guān)的選擇語(yǔ)句檢索出的多條記錄)和結(jié)果集中指向特定記錄的游標(biāo)位置組成。當(dāng)決定對(duì)結(jié)果集進(jìn)行處理時(shí),必須聲明一個(gè)指向該結(jié)果集的游標(biāo)。如果曾經(jīng)用 C 語(yǔ)言寫(xiě)過(guò)對(duì)文件進(jìn)行處理的程序,那么游標(biāo)就像您打開(kāi)文件所得到的文件句柄一樣,只要文件打開(kāi)成功, 該文件句柄就可代表該文件。對(duì)于游標(biāo)而言,其道理是相同的??梢?jiàn)游標(biāo)能夠?qū)崿F(xiàn)按與傳統(tǒng)程序讀取平面文件類(lèi)似的方式處理來(lái)自基礎(chǔ)表的結(jié)果集,從而把表中數(shù)據(jù)以平面文件的形式呈現(xiàn)給程序。
使用Python的SQLite時(shí),只要搞清楚Connection和Cursor對(duì)象,打開(kāi)后一定記得關(guān)閉,就可以放心地使用。
使用Cursor對(duì)象執(zhí)行insert,update,delete語(yǔ)句時(shí),執(zhí)行結(jié)果由rowcount返回影響的行數(shù),就可以拿到執(zhí)行結(jié)果。
使用Cursor對(duì)象執(zhí)行select語(yǔ)句時(shí),通過(guò)featchall()返回select的全部數(shù)據(jù)結(jié)果集。結(jié)果集是一個(gè)list,每個(gè)元素都是一個(gè)tuple,對(duì)應(yīng)一行記錄,按建表的字段順序排列。fetchone()返回一條結(jié)果,是一個(gè)tuple,每個(gè)元素是一個(gè)字段值。
需要注意的是,SQLite游標(biāo)是有狀態(tài)的,只能遍歷結(jié)果集一次,不能在結(jié)果集中返回移動(dòng),遍歷結(jié)束返回空值。featchall()一次性返回全部結(jié)果,fetchone()依順序每次返回一條結(jié)果,而且對(duì)fetchone()執(zhí)行l(wèi)en()操作以獲得所取得記錄的條數(shù)后,相當(dāng)于完成對(duì)結(jié)果集的一次遍歷,結(jié)果集將被清空。因此,取得結(jié)果集后,如需對(duì)結(jié)果集進(jìn)行進(jìn)一步操作,可將結(jié)果集保存到變量中。
while cn.fetchone(): print(cn.fetchone())
for line in cn.featchall(): print(line)
上述就是小編為大家分享的怎么在python中使用sqlite3判斷cursor的結(jié)果是否為空了,如果剛好有類(lèi)似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。