2012-12-17 122 views
1

我需要從Oracle查詢結果中創建一組字典。我的數據被列入站ID,日期,時間,地點,種類和捕撈重量。對於每個物種,都有一條新線,而所有的位置等數據可能是多餘的。cx_Oracle查詢結果嵌套字典

首先,我需要的字段名和值,如的stationID,日期等,這樣,當我打電話,說,

value[1] (this being the station ID field) 

我去創建加密字典

112 

的最終的結果是將所有「喜歡」的臺站ID,日期等集成到一個唯一的關鍵字中,並將結果數據(魚類捕捉)作爲值。

[date,time,location, etc]:鱈魚47,鱈魚31,角鯊5

到目前爲止,得到數據解析成字段名個人密鑰字典,然後用線我有這樣的:

desc=[d[0] for d in cursor.description] 
field=[d[1] for d in cursor.description] 
value=dict(zip(desc,field)) 
result=[dict(zip(value,line)) for line in cursor] 
print result[1] 

但是,如果我嘗試調用值,那麼該字段就是數據類型..我怎樣才能獲得實際的數據值?然後將其嵌入解析每個單獨樣本的「結果」字典中?

+0

我想你想'結果[0] [「站ID」]'代替,其中'result'是字典列表,每個結果行一個,由您的代碼嘗試來判斷。 –

+0

我看你在說什麼......但是,如果我嘗試這個,但是,我得到一個關鍵錯誤,雖然輸入的密鑰與我在查詢中使用的相同... –

+0

檢查結果[0] .keys( )'。 –

回答

3

您正在將錯誤的項目壓縮在一起。 ZIP僅descline,你不需要在cursor.description元組使用的第二個項目:

desc=[d[0] for d in cursor.description] 
result=[dict(zip(desc, line)) for line in cursor] 
+0

好的,這就是我的想法。通過樣本分割所有的東西......我怎樣才能讓每個值都可以被調用?分裂? –

+0

如果您想彙總數據,爲什麼Oracle沒有爲您做這件事?您可以使用「GROUP BY」查詢並具有「SUM()」列。 –

+0

哦!我不知道爲什麼我沒有想到這一點。結果可以以相同的方式讀入字典嗎? –