可能有一个明显的答案,但我似乎无法在任何地方找到它:查询存储在云服务器上的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'))
我已经阅读了关于查询的cloudant教程,但是提出的查询语法看起来很笨拙,并且如何将其用于python并不明显!有一个简单的方法吗?
答案 0 :(得分:3)
这是我用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)
答案 1 :(得分:1)
Cloudant禁止临时视图的原因是因为它们无法扩展。您需要创建一个包含已定义视图的设计文档。以下是设计文档与其上定义的视图相似的链接:
http://max.ic.ht/_utils/document.html?action/_design/action
我不确定如何在couchdb.py中执行此操作,但您可能想尝试使用其他python库。以下是有关在couchquery中创建视图的部分的链接
答案 2 :(得分:1)
注意Cloudant现在有一个官方的python库,https://github.com/cloudant/python-cloudant。
答案 3 :(得分:0)
您应该使用couchdbkit。它使设置视图变得容易。我不认为你可以在Cloudant中使用临时视图了。