PyQt5編程(40)—使用數(shù)據(jù)庫(6)

3.2 處理查詢結(jié)果
如果查詢是為選取數(shù)據(jù)(SQL選擇命令),涉及的方法有:

 isActive():如果查詢處于活動(dòng)狀態(tài),則返回True。 一個(gè)活躍的QSqlQuery是exec()已成功執(zhí)行,但尚未完成的狀態(tài)。
isSelect():如果當(dāng)前查詢是SELECT語句,則返回True; 否則返回False。

 PyQt5編程(39)中提到執(zhí)行exec()后要定位到某一內(nèi)容才能讀取數(shù)據(jù)庫記錄。QSqlQuery類的定位函數(shù)有:

first():定位到第一條記錄;
next():定位到下一條記錄。如果是在exec()后立即調(diào)用,則定位到第一條記錄;
previous():定位到前一條記錄
last():定位到最后一條記錄;
seek(int index[, bool relative = false]):定位到指定位置index,index=0代表第一條記錄。如果可選參數(shù)relative為True,則index為相對當(dāng)前記錄的位置,index>0為向前的記錄;index<0為向后的記錄。
isvalid(): 如果當(dāng)前是定位在有效的記錄上返回True,否則返回False。
at():返回當(dāng)前記錄的位置,0表示第一條記錄。
size():返回查詢結(jié)果中的記錄數(shù)。

以下方法用來處理數(shù)據(jù)記錄:

value(int index):返回當(dāng)前記錄中字段索引為index的值。
value(QString name):返回字段名為name為值。
isNull(int index):如果字段索引為index的值為Null,返回True,否則返回False。
isNull(QString name):如果字段name的值為Null,返回True,否則返回False。
record():返回包含當(dāng)前查詢字段信息的QSqlRecord實(shí)例。

示例:
from PyQt5 import QtWidgets, QtSql
import sys
app = QtWidgets.QApplication(sys.argv)
con = QtSql.QSqlDatabase.addDatabase('QSQLITE')
con.setDatabaseName('data.sqlite')
con.open()
query = QtSql.QSqlQuery()
query.exec("select * from good order by goodname")
lst = []
if query.isActive():
query.first()
while query.isValid():
lst.append(query.value('goodname') + ': ' + str(query.value('goodcount')) + 'pcs.')
query.next()
for p in lst: print(p)
con.close()

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容