背景 - 我在CouchDb中存储了一些推文,我想通过使用Twitter Id作为CouchDb文档ID来轻松防止存储重复的推文。
我使用Python脚本使用python-twitter库从Twitter中提取一些推文,该库返回一组对象,每个对象都包含唯一的Twitter tweet id作为属性(twitter.Status.id)。在将推文保存到CouchDb时,我想将此作为CouchDb文档ID。
>>> import twitter
>>> api = twitter.Api()
>>> statuses = api.GetSearch('xyz')
>>> s = statuses[0] # save just the first one for now
>>> import couchdb
>>> couch = couchdb.Server()
>>> dbcouch = couch['tweets']
>>> dbcouch.save(s.AsDict())
(u'fd55e5944267266892f076891a3d9ac4', u'1-4a50a618afd4dc68373155b1ad3e96a1')
CouchDb设置了一个唯一的Id,这不是我想要的。该文档包含在从头开始构建文档时设置手动文档ID的示例,但在这种情况下(对象交给我),我似乎无法使其工作。
答案 0 :(得分:1)
在将其保存到沙发之前,您需要在状态中获得"_id"
字段。例如(我的Python生锈)
>>> s = statuses[0] # save just the first one for now
>>> tweet = s.AsDict()
>>> tweet["_id"] = "%d" % tweet["id"]
>>> # (Couch stuff same as before)
>>> dbcouch.save(tweet)
这是如何运作的?