2014-12-10 2 views
0

저는 Simple_Salesforce라는 파이썬 라이브러리를 사용하여 온라인 CRM 데이터베이스를 쿼리합니다. 쿼리 문자열과 쿼리 결과를 사전에 저장합니다. Query_String 및 Results는 각 테이블마다 고유합니다. 고유 한 각 테이블의 첫 번째 키가 루프에 포함되어 있기 때문에 몇 가지 문제가 있습니다. 어떻게 이것을 루프에 통합 한 다음 키와 관련된 데이터를 어떻게 인쇄합니까? 그것은 테이블 자체에 대해 Cases and Opportunity 키를 만들 필요가 있지만 이것이 가능한지 확실하지 않은 것과 같습니다.파이썬 루프를 통해 사전 값 추가/참조

from simple_salesforce import Salesforce 

#Define all data 
Query_Dict = [ 
    {'Cases' : [], 'Results' : [], "Query_String" : "Select Id, Opportunity From Case where Opportunity <> null"}, 
    {'Opportunity' : [], 'Results' : [], "Query_String" : "Select Id, Opportunity_Name From Opportunity where Status = 'New'"}, 
] 

#open Salesforce Connection 
sf = Salesforce(username='myusername', password='mypassword', security_token='mytoken') 

#Dump the query results into a results key for each row then convert to proper format 
for tbl in Query_Dict: 
     tbl['Results'] = sf.query_all(tbl['Query_String']) 
     tbl['Cases'] = records tbl['Cases']['records'] 
     tbl['Opportunity'] = records tbl['Opportunity']['records'] 

#print results associated with Cases key 
print Query_dict['Cases'] 

답변

2

내가 테이블 자체 당신이 올바른 궤도에있어

케이스 및 기회 키를 만들 필요가 거의 같다. 이 작업을 수행 할 수 있도록 제안 정확히 무엇을 할

한 가지 방법은, 키가, Table_Name, 말, 예를 들어, Table_Name: "Cases"라는 것입니다 :

tbl[tbl['Table_Name']] = … 

(이후 과제 문 ISN의 오른쪽 절반 't 유효한 파이썬 코드를 나는 의미하기로했다 모르겠어요, 나는 그것을 해결하는 방법을 정확히 잘 모르겠지만, 아마도 그냥 다시 tbl['Table_Name']"Cases"을 교체하는 것을 의미한다.)


그러나 나는 생각한다 베테랑 R 솔루션 대신 목록으로하는 사전 테이블의을 유지하는 것입니다, 그리고 테이블 이름 오프 키 것을 :

:

Query_Dict = { 
    'Cases': {'Cases' : [], 'Results' : [], "Query_String" : "Select Id, Opportunity From Case where Opportunity <> null"}, 
    'Opportunity': {'Opportunity' : [], 'Results' : [], "Query_String" : "Select Id, Opportunity_Name From Opportunity where Status = 'New'"}, 
} 

그리고 지금은, viewitems *에 키 - 값 쌍을 반복

for name, tbl in Query_Dict.viewitems(): 
    tbl[name] = … 

* viewitems은 2.7에 해당합니다. 이전 2.x 버전과 호환되도록하려면 iteritems을 사용할 수 있습니다. 3.x와 호환되도록하려면 items을 사용하면됩니다 (불필요한 임시 목록을 무해하게 만드는만큼 작 으면 Query_Dict).

그리고 이것은 (대문자 오타 제외) 작성된 코드 작업의 마지막 라인을 만들기 위해 필요한 정확히입니다 : 실제로 지금 사전입니다

print Query_Dict['Cases'] 

Query_Dict 때문에, 'Cases'와 같은 열쇠, 목록 대신에, 이것은 당신이 원하는 것과 정확히 일치합니다.

+0

답변 해 주셔서 감사합니다. 이것은 꽤 좋아 보인다. 나는 약간의 viewitems 것에 혼란 스럽다. 이름 가치는 어디에서 오는가? – user2242044

+0

@ user2242044 : [the docs] (https://docs.python.org/2.7/library/stdtypes.html#dict.items)를 확인하십시오. 'items','iteritems','viewitems'은 모두 키 - 값 쌍을 두 값으로줍니다. 따라서 'd = {1 :'a ', 2 :'b '}'이면 키에 대해 d : print key, value의 값은'1 a'와'2 b'를 출력합니다. – abarnert

+0

Query_Dict.viewitems()의'for name, tbl에 Name이 들어있는 위치를 설명 할 수 있습니다 :'이 키보드가 파이썬에 내장되어 있습니까? – user2242044