2017-07-31 34 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

相關問題