2012-08-16 56 views
0

基本上,我試圖使用govtrack.us提供的API來獲取信息並將其存儲到我自己的應用程序的數據存儲庫中,以供進一步操作(使用python)。 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'current_role「 u'youtubeid」,U '名字'等等)。

現在,我已經有了這個功能,拉的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:

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']] 

而是將所有的人的姓名,性別,youtube等等提供給一個單獨的列表,我想將每個對象添加到他們自己的列表中,其中包含添加到數據存儲所需的信息。基本上,像這樣的列表:

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

但是每個對象一個。什麼是最好的方式去做這件事?或者我必須列出所有名稱,所有性別的列表等等,然後將它們匹配起來?

回答

1

首先你需要定義一個模型。有關詳細信息,請參閱Ndb Overview

比方說你的模型是一樣的東西

class Congressman(ndb.model): 
    ... 

然後,而不是計算的名字之一名單,其他YouTube的ID,您會遍歷所有對象一次,並創建一個Congressman對象和存儲。

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

不知道。謝謝! – glitchbox 2012-08-16 08:20:07

相關問題