使用pyqt在postgres中连续检索所有记录

Retrieving all records in a row in postgres with pyqt

我正在编写一个借助 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 and QSqlResult并没有带来任何启发。我尝试使用 query.result().boundValues() 但只得到空列表 return.

我的预期结果是一个包含一行所有值的列表。

问题: 这有一种方法可以从 PyQt 的查询中检索一行中的所有数据吗?

select语句中的列是从左到右(从零开始)编号的,所以你可以这样做:

indexes = range(num_cols)
while query.next():
    row = [query.value(index) for index in indexes]
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))