一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - python sqlite3 判斷cursor的結果是否為空的案例

python sqlite3 判斷cursor的結果是否為空的案例

2021-09-23 00:16RikkaTakanashi Python

這篇文章主要介紹了python sqlite3 判斷cursor的結果是否為空的案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

len(list(cursor))若是0則為空

舉例:

?
1
2
3
4
5
6
7
8
9
10
11
12
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)))

結果為0

?
1
2
3
4
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)))

結果為1

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

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

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

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

使用Cursor對象執行insert,update,delete語句時,執行結果由rowcount返回影響的行數,就可以拿到執行結果。

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

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

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

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持服務器之家。如有錯誤或未考慮完全的地方,望不吝賜教。

原文鏈接:https://blog.csdn.net/RikkaTakanashi/article/details/89296579

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产免费视频 | 水野朝阳厨房系列在线观看 | 韩国激情网 | 欧美一区二区三区视视频 | 国产大片线上免费观看 | 亚洲欧美综合区自拍另类 | 四虎影视884aa·com | 男人天堂999 | 亚洲精品福利在线 | 精品欧美一区二区精品久久 | 91久久精品国产一区二区 | 小浪妇奶真大水多 | 亚洲乱码一区二区三区国产精品 | 国产精品二区高清在线 | 教师系列 大桥未久在线 | 91亚洲精品第一综合不卡播放 | 久操久操久操 | 羞羞视频污| 亚洲无线一二三四区 | 男女乱淫真视频播放网站 | www伊人| 亚洲无线一二三四区 | 国产精品制服丝袜白丝www | 成年人免费看的视频 | 日本福利视频网站 | 日韩亚洲人成在线 | 天堂网www中文天堂在线 | 放荡护士玩3p口述 | 欧美日韩国产精品va | 三年片韩国在线 | 精品视频中文字幕 | xxxxx性13一14 | 欧美vpswindows| 嫩草影院永久在线一二三四 | 亚洲人尿尿 | 国产情侣视频观看 | 亚洲欧美日韩另类精品一区二区三区 | 亚洲精品国产专区91在线 | 加勒比一本大道香蕉在线视频 | 亚洲卡一卡2卡三卡4麻豆 | 四虎最新免费观看网址 |