我正在编写一个工具,在PostgreSQL和PyQt4的帮助下生成报告。
我在我的数据库中写了一个查询:
sql = "SELECT field1, field2, field3 FROM my_table ORDER BY id ASC"
query = QSqlQuery(self.db) # self.db holds my connection to the database
query.exec_(sql)
这很好用我现在可以从查询中获取这样的值:
while query.next():
print query.record().value("field1")
下一步是将结果存储在容器(列表/字典)中,并对报告进行计算。然而,在我的情况下,我有许多字段,我需要存储和逐个调用似乎很长一段路。
通过阅读QSqlquery和QSqlResult没有带来任何光明。我尝试使用query.result().boundValues()
,但只返回空列表。
我的预期结果是一个包含行的所有值的列表。
问题: 有没有办法从PyQt查询中检索一行中的所有数据?
答案 0 :(得分:1)
select语句中的列从左到右编号(从零开始),因此您可以这样做:
indexes = range(num_cols)
while query.next():
row = [query.value(index) for index in indexes]
答案 1 :(得分:0)
sql=("select count(id) as total_user from datos")
query.exec_(sql)
query.next()
user=query.record().value("total_user")
self.lbl_user.setText(str(user))