PyQt5编程(40)—使用数据库(6)

3.2 处理查询结果
如果查询是为选取数据(SQL选择命令),涉及的方法有:

 isActive():如果查询处于活动状态,则返回True。 一个活跃的QSqlQuery是exec()已成功执行,但尚未完成的状态。
isSelect():如果当前查询是SELECT语句,则返回True; 否则返回False。

 PyQt5编程(39)中提到执行exec()后要定位到某一内容才能读取数据库记录。QSqlQuery类的定位函数有:

first():定位到第一条记录;
next():定位到下一条记录。如果是在exec()后立即调用,则定位到第一条记录;
previous():定位到前一条记录
last():定位到最后一条记录;
seek(int index[, bool relative = false]):定位到指定位置index,index=0代表第一条记录。如果可选参数relative为True,则index为相对当前记录的位置,index>0为向前的记录;index<0为向后的记录。
isvalid(): 如果当前是定位在有效的记录上返回True,否则返回False。
at():返回当前记录的位置,0表示第一条记录。
size():返回查询结果中的记录数。

以下方法用来处理数据记录:

value(int index):返回当前记录中字段索引为index的值。
value(QString name):返回字段名为name为值。
isNull(int index):如果字段索引为index的值为Null,返回True,否则返回False。
isNull(QString name):如果字段name的值为Null,返回True,否则返回False。
record():返回包含当前查询字段信息的QSqlRecord实例。

示例:
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()

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • http://192.168.136.131/sqlmap/mysql/get_int.php?id=1 当给sq...
    xuningbo阅读 13,537评论 2 22
  • from PyQt5 import QtCore, QtWidgets, QtSqlimport sysapp =...
    用电热毯烤猪阅读 7,546评论 0 50
  • 曾经我很年轻 曾经我很痴狂 曾经以为学过的知识过目不忘 曾经…… 无数个曾经 无数个痴狂 随着年龄的增长 一切无影...
    雲行天下阅读 2,206评论 8 6
  • 一好友打话电劈头盖脸的问:“亲爱的,你说结婚是在干嘛?”哦,结婚是在干嘛?生孩,传宗接代?为了两情相悦?.....
    大象姐说心理阅读 3,783评论 0 2
  • -1- 郝娟是我之前的下属,我在前东家做销售主管时,她是一名非常非常不起眼的美容顾问。我从她的前任主管那里接手,带...
    蜜丝赵阅读 6,028评论 15 48

友情链接更多精彩内容