Как я могу использовать существующее свойство в качестве doc_id, используя методы создания или сохранения библиотеки Python CouchDb? - PullRequest
2 голосов
/ 14 февраля 2012

Справочная информация. Я храню некоторые твиты в CouchDb и хочу упростить предотвращение хранения дубликатов твитов, используя идентификатор Twitter в качестве идентификатора документа CouchDb.

Я использую скрипт Python для извлечениянекоторые твиты из Twitter, использующие библиотеку python-twitter, которая возвращает коллекцию объектов, каждый из которых содержит уникальный идентификатор твита Twitter в качестве свойства (twitter.Status.id).Я хотел бы использовать это в качестве идентификатора документа CouchDb при сохранении твита в CouchDb.

>>> 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 установил уникальный идентификатор, который мне не нужен.В документации есть примеры установки ручного идентификатора документа, когда документ создается с нуля, но в этом случае (когда мне вручают объект), я не могу заставить его работать.

1 Ответ

1 голос
/ 15 февраля 2012

Вам нужно получить поле "_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)

Как это работает?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...