Python 使用pyqt检索postgres中一行中的所有记录

Python 使用pyqt检索postgres中一行中的所有记录,python,pyqt4,Python,Pyqt4,在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 q

在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")
这很好,我现在可以从查询中获得如下值:

 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")
下一步是将结果存储在容器(列表/字典)中,并对报告进行计算。然而,在我的例子中,我需要存储许多字段,并且逐个调用所有字段似乎是一条漫长的弯路

通过阅读有关这件事,并没有带来任何光明。我尝试了
query.result().boundValues()
,但只得到了空列表作为返回

我期望的结果是一个列表,其中包含一行的所有值

问题:
有没有一种方法可以通过PyQt从查询中检索一行中的所有数据

select语句中的列从左到右编号(从零开始),因此您可以执行以下操作:

indexes = range(num_cols)
while query.next():
    row = [query.value(index) for index in indexes]

这正如我所预料的。谢谢你的见解!有趣行为的一点旁注:当意外地用num\u行更改num\u cols时,仍然会得到有效的列表,但填充了“null”值。有没有办法从查询对象中获取“num\u cols”?要获取“num\u cols”,请调用query.record().count()抱歉,但我看不出这将如何解决我在许多字段中遇到的问题。请你再详细一点好吗?请不要只发布代码作为答案。解释它是如何工作的。