2012-08-16 2 views
0

기본적으로 govtrack.us에서 제공하는 API를 사용하여 정보를 가져 와서 추가 조작 (파이썬 사용)을 위해 내 응용 프로그램의 데이터 저장소에 저장하려고합니다. API는 기본적으로 json을 제공하며 json을 얻으면 데이터 저장소에 원하는 각 요소를 추가하는 방법에 대해 분실하기 시작합니다. 예를 들어,이 json 다음 키가 있습니다 : {u'meta ', u'objects'}. 각 객체는 다음 키를 가지고 :API 요청의 결과를 Google Datastore에 저장하는 방법

나는 각 개체를 가지고 그냥 모든 정보를 데이터 저장소에 보관 (하지만 할 수 있도록하려면
[u'gender_label', u'osid', u'id', u'pvsid', u'current_role', u'name_sortable', u'firstname', u'twitterid', u'middlename', u'lastname', u'bioguideid', u'birthday', u'link', u'youtubeid', u'nickname', u'name', u'roles', u'gender', u'namemod', u'metavidid', u'name_no_details', u'resource_uri'] 

- ', u'youtubeid을'u'current_role 등을 유 '이름'등 ...).

대신에 모든 사람의 이름을 추가
current_congressman = get_congressman() 
j   = json.loads(current_congressman) 
name   = [c['name_no_details'] for c in j['objects']] 
youtube  = [c['youtubeid'] for c in j['objects']] 
gender_list = [c['gender_label'] for c in j['objects']] 

, 성별 : 반환 된 JSON을 반복

def get_congressman(): 
url = 'http://www.govtrack.us/api/v1/person?roles__current=true&limit=3000' 
content = None 
try: 
    content = urllib2.urlopen(url).read() 
except URLError: 
    return 
if content: 
    return content 

그리고이 :

는 지금, 나는 JSON을 끌어이 기능을 가지고있다 , YouTube 피드 등을 별도의 목록에 추가하려면 데이터 저장소에 추가하는 데 필요한 정보가 포함 된 각 개체를 자체 목록에 추가하고 싶습니다. 기본적으로 다음과 같은 목록이 표시됩니다.

["Gary Ackerman", "Male", "RepAckerman"] 

하지만 각 개체마다 하나씩. 이것에 대해 가장 좋은 방법은 무엇입니까? 아니면 모든 이름의 목록과 모든 성별 목록을 가져야하고, 그런 다음 일치시켜야합니까?

답변

1

먼저 모델을 정의해야합니다. 자세한 내용은 Ndb Overview을 참조하십시오.

는 모델 대신 유튜브 ID에 대한 다른 이름의 하나 개의 목록을, 컴퓨팅, 당신이 한 번에 모든 개체를 통과하고 Congressman 객체를 생성하고 저장합니다 다음

class Congressman(ndb.model): 
    ... 

같은 것을 말할 수 있습니다.

for congressman_info in j['objects']: 
    congressman = Congressman(gender=congresmman_info['gender_label'], 
           name=congressman_info['name_no_details'], ...) 
    congressman.put() 
+0

몰랐습니다. 감사! – glitchbox

관련 문제