如何将api请求的结果保存到Google数据存储?

2024-10-17 06:18:47 发布

您现在位置:Python中文网/ 问答频道 /正文

基本上,我正在尝试使用美国政府提取信息并存储到我自己的应用程序的数据存储中,以便进一步操作(使用python)。api默认为json服务,当我得到json时,我开始不知道如何将每个元素添加到数据存储中。例如,这个json有以下键:{u'meta',u'objects}。每个对象都有以下键:

[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\u role'、u'youtubeid'、u'name'等)。你知道吗

现在,我有一个函数可以提取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"]

但每个物体一个。最好的办法是什么?或者我必须有一个所有名字的列表,另一个所有性别的列表,等等,然后把它们匹配起来?你知道吗


Tags: 数据对象nameinapi信息json列表
1条回答
网友
1楼 · 发布于 2024-10-17 06:18:47

首先需要定义一个模型。有关详细信息,请参见Ndb Overview。你知道吗

假设你的模型是

class Congressman(ndb.model):
    ...

然后,您将遍历所有对象一次,创建一个Congressman对象并存储它,而不是计算一个名称列表(另一个用于youtube id)。你知道吗

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

相关问题 更多 >