2017-07-31 37 views
1

我正在编写一个工具来在PostgreSQL和PyQt4的帮助下生成报告。用pyqt在postgres中检索一行中的所有记录

我编写一个查询到我的数据库是这样的:

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") 

下一步将存储产生一个容器(列表/字典)并对报告进行计算。然而,就我而言,我有很多领域需要存储,并且逐个打电话似乎是一个漫长的弯路。

通过阅读关于QSqlqueryQSqlResult没有带来任何亮光。我尝试了query.result().boundValues(),但只有空列表作为回报。

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

问题: 有没有办法从PyQt的查询中检索一行中的所有数据?

回答

1

在SELECT语句中的列从左至右(从零开始)编号的,所以你可以做:

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

这个工作了,因为我的预期。感谢您的见解!有趣的行为的小方面说明:当意外地用num_rows改变num_cols时,你仍然可以得到有效的列表,但填充了“null”值 – LaughU

相关问题