запрос облачный с питоном - PullRequest
4 голосов
/ 18 октября 2011

На этот вопрос может быть очевидный ответ, но я не могу найти его нигде: каков наилучший способ запроса баз данных couchdb, хранящихся на облачных серверах?Я пытаюсь использовать временные представления, как инструкции couchdb.py:

>>> db['johndoe'] = dict(type='Person', name='John Doe')
>>> db['maryjane'] = dict(type='Person', name='Mary Jane')
>>> db['gotham'] = dict(type='City', name='Gotham City')
>>> map_fun = '''function(doc) {
...     if (doc.type == 'Person')
...         emit(doc.name, null);
... }'''
>>> for row in db.query(map_fun):
...     print row.key
John Doe
Mary Jane

Хотя это работает на локально размещенных базах данных, с CloudAnt возвращает ошибку:

couchdb.http.ServerError: (403, ('forbidden', 'temp views are disabled on Cloudant'))

У меня естьПрочитайте обучающее руководство по запросам, но предложенный синтаксис запроса кажется неуклюжим, и неясно, как превратить его в python!Есть ли простой способ обойти это?

Ответы [ 4 ]

3 голосов
/ 26 июня 2014

Вот как я добавляю запись с python.

import requests
import json

doc = {
  'username':'kerrie',
  'high_score':550,
  'level':3
}

auth = ('username', 'password')
headers = {'Content-type': 'application/json'}

post_url = "https://account.cloudant.com/database/kerrie".format(auth[0])

r = requests.put(post_url,  auth=auth,  headers=headers,  data=json.dumps(doc))
print json.dumps(r.json(), indent=1)

Вот так я запрашиваю 10 записей в Python.

import requests
import json
auth = ('username', 'password')
get_url = "https://account.cloudant.com/database/_all_docs?limit=10".format(auth[0])
r = requests.get(get_url, auth=auth)
print json.dumps(r.json(), indent=1)
1 голос
/ 19 октября 2017

Просто отметьте, что Cloudant теперь имеет официальную библиотеку Python, https://github.com/cloudant/python-cloudant.

1 голос
/ 18 октября 2011

Причина, по которой Cloudant запрещает временные просмотры, заключается в том, что они не масштабируются. Вам нужно будет создать проектный документ с определенными представлениями в нем. Вот ссылка на то, на что похож проектный документ с определенными представлениями:

http://max.ic.ht/_utils/document.html?action/_design/action

Я не уверен, как это сделать в couchdb.py, но вы можете попробовать другую библиотеку python. Вот ссылка на раздел о создании представлений в couchquery

http://mikeal.github.com/couchquery/#creating-views

0 голосов
/ 17 апреля 2013

Вы, вероятно, должны использовать couchdbkit . Это облегчает настройку представлений. Я не думаю, что вы можете использовать временные представления в Cloudant больше.

...