2012-12-17 6 views
1

Oracle 쿼리 결과에서 사전 집합을 만들어야합니다.중첩 된 사전에 대한 cx_Oracle 쿼리 결과

내 데이터는 스테이션 ID, 날짜, 시간, 위치, 종 및 캐치 중량으로 배치됩니다. 각 종마다 새 줄이 있고 모든 위치 등은 중복 될 수 있습니다.

첫째, 나는 그런 등

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

내가 얻을, 나는 말, 호출 할 때 있도록 stationID, 날짜 등의 필드 이름과 값에 의해 키잉 사전을 만들 필요가

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

'result [0] .keys ()'. –

답변

3

잘못된 항목을 함께 압축합니다. , 당신은 cursor.description 튜플의 두 번째 항목을 사용하는 경우에만 descline 필요가 없습니다 우편 번호 :

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

좋아, 그게 내가 생각한거야. 샘플로 모든 것을 나눕니다 ... 어떻게하면 각 값을 호출 가능하게 만들 수 있습니까? 분할? –

+0

데이터를 집계하려면 오라클이 데이터를 수집해야하는 이유는 무엇입니까? 'GROUP BY'로 질의하고'SUM()'컬럼을 가질 수 있습니다. –

+0

오! 왜 내가 이것을 생각하지 않았는지 모르겠다. 결과를 같은 방식으로 사전에 읽을 수 있습니까? –