用python查询cloudant

用python查询cloudant,python,couchdb,cloudant,Python,Couchdb,Cloudant,对此可能有一个显而易见的答案,但我似乎在任何地方都找不到:查询存储在cloudant服务器上的couchdb数据库的最佳方法是什么?我尝试使用临时视图,a la couchdb.py说明: >>> db['johndoe'] = dict(type='Person', name='John Doe') >>> db['maryjane'] = dict(type='Person', name='Mary Jane') >>> db['goth

对此可能有一个显而易见的答案,但我似乎在任何地方都找不到:查询存储在cloudant服务器上的couchdb数据库的最佳方法是什么?我尝试使用临时视图,a la 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'))

我已经阅读了cloudant关于查询的教程,但提出的查询语法似乎很笨拙,而且不清楚如何将其应用到python中!有没有一种简单的方法解决这个问题?

Cloudant禁止临时视图的原因是它们不可缩放。您需要创建包含已定义视图的设计文档。以下是指向设计文档的链接,其中定义了视图:

我不确定如何在couchdb.py中实现这一点,但您可能希望尝试不同的python库。这里有一个链接,指向关于在couchquery中创建视图的部分


您可能应该使用。它使设置视图变得容易。我认为您不能再在Cloudant中使用临时视图了

我就是这样用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)
这就是我在Python中查询10条记录的方式

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)

请注意,Cloudant现在有一个官方的python库。

OK,所以我现在可以创建视图,并使用设计文档来实现这一点。。。。下一步是研究如何在couchdb python的ListField中发送针对特定值的查看请求。我建议使用普通HTTP库,如请求。服务器已关闭。