如何使用Python CouchDb库创建或保存方法将现有属性用作doc_id?

时间:2012-02-14 19:15:40

标签: python twitter couchdb

背景 - 我在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的示例,但在这种情况下(对象交给我),我似乎无法使其工作。

1 个答案:

答案 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)

这是如何运作的?