佳木斯湛栽影视文化发展公司

主頁 > 知識庫 > python sqlite3 判斷cursor的結(jié)果是否為空的案例

python sqlite3 判斷cursor的結(jié)果是否為空的案例

熱門標簽:百度AI接口 呼叫中心市場需求 企業(yè)做大做強 Win7旗艦版 電話運營中心 客戶服務 硅谷的囚徒呼叫中心 語音系統(tǒng)

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

補充:python中的SQLite游標(cursor)

我們知道關系數(shù)據(jù)庫管理系統(tǒng)實質(zhì)是面向集合的,在Sqlite中并沒有一種描述表中單一記錄的表達形式,除非使用where 子句來限制只有一條記錄被選中。因此我們必須借助于游標來進行面向單條記錄的數(shù)據(jù)處理。由此可見,游標允許應用程序?qū)Σ樵冋Z句select 返回的行結(jié)果集中每一行進行相同或不同的操作,而不是一次對整個結(jié)果集進行同一種操作;它還提供對基于游標位置而對表中數(shù)據(jù)進行刪除或更新的能力;正是游標把作為面向集合的數(shù)據(jù)庫管理系統(tǒng)和面向行的程序設計兩者聯(lián)系起來,使兩個數(shù)據(jù)處理方式能夠進行溝通。

游標提供了一種對從表中檢索出的數(shù)據(jù)進行操作的靈活手段,就本質(zhì)而言,游標實際上是一種能從包括多條數(shù)據(jù)記錄的結(jié)果集中每次提取一條記錄的機制。游標總是與一條SQL 選擇語句相關聯(lián)。因為游標由結(jié)果集(可以是零條、一條或由相關的選擇語句檢索出的多條記錄)和結(jié)果集中指向特定記錄的游標位置組成。當決定對結(jié)果集進行處理時,必須聲明一個指向該結(jié)果集的游標。如果曾經(jīng)用 C 語言寫過對文件進行處理的程序,那么游標就像您打開文件所得到的文件句柄一樣,只要文件打開成功, 該文件句柄就可代表該文件。對于游標而言,其道理是相同的??梢娪螛四軌?qū)崿F(xiàn)按與傳統(tǒng)程序讀取平面文件類似的方式處理來自基礎表的結(jié)果集,從而把表中數(shù)據(jù)以平面文件的形式呈現(xiàn)給程序。

使用Python的SQLite時,只要搞清楚Connection和Cursor對象,打開后一定記得關閉,就可以放心地使用。

使用Cursor對象執(zhí)行insert,update,delete語句時,執(zhí)行結(jié)果由rowcount返回影響的行數(shù),就可以拿到執(zhí)行結(jié)果。

使用Cursor對象執(zhí)行select語句時,通過featchall()返回select的全部數(shù)據(jù)結(jié)果集。結(jié)果集是一個list,每個元素都是一個tuple,對應一行記錄,按建表的字段順序排列。fetchone()返回一條結(jié)果,是一個tuple,每個元素是一個字段值。

需要注意的是,SQLite游標是有狀態(tài)的,只能遍歷結(jié)果集一次,不能在結(jié)果集中返回移動,遍歷結(jié)束返回空值。featchall()一次性返回全部結(jié)果,fetchone()依順序每次返回一條結(jié)果,而且對fetchone()執(zhí)行l(wèi)en()操作以獲得所取得記錄的條數(shù)后,相當于完成對結(jié)果集的一次遍歷,結(jié)果集將被清空。因此,取得結(jié)果集后,如需對結(jié)果集進行進一步操作,可將結(jié)果集保存到變量中。

while cn.fetchone():
 print(cn.fetchone())
for line in cn.featchall():
 print(line)

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

您可能感興趣的文章:
  • Python標準庫之數(shù)據(jù)庫 sqlite3
  • python數(shù)據(jù)庫如何連接SQLite詳解
  • python 操作sqlite數(shù)據(jù)庫的方法
  • Python 操作SQLite數(shù)據(jù)庫的示例
  • python鏈接sqlite數(shù)據(jù)庫的詳細代碼實例

標簽:海南 山西 喀什 山西 濟南 崇左 安康 長沙

巨人網(wǎng)絡通訊聲明:本文標題《python sqlite3 判斷cursor的結(jié)果是否為空的案例》,本文關鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權(quán)與本站無關。
  • 相關文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    青浦区| 鹤岗市| 水城县| 门头沟区| 黑山县| 徐汇区| 绥化市| 葫芦岛市| 集安市| 安国市| 晴隆县| 临澧县| 孝感市| 南陵县| 犍为县| 临清市| 蓝田县| 南和县| 新巴尔虎右旗| 阿图什市| 乐清市| 西华县| 双流县| 通海县| 措美县| 阿荣旗| 禹城市| 三门县| 交城县| 新闻| 阿克| 东兰县| 九龙坡区| 诏安县| 博客| 革吉县| 永年县| 阳西县| 都兰县| 固安县| 岳西县|