2011-10-18 21 views
4

明白な答えがあるかもしれませんが、どこでも見つけることができません:クラウドサーバに格納されたcouchdbデータベースを照会する最良の方法は何ですか?それがエラーを返しCloudAntで、これはローカルでホストされたデータベースで動作しますがpythonを使用したクエリクラウド

>>> 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 

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

私はcloudantチュートリアルを読んだ私は、一時的な景色、ラcouchdb.py命令を使用してみてくださいクエリでは、提案されたクエリの構文が不器用に思われ、それをPythonにどのように処理するのかは明らかではありません。これの周りに簡単な方法はありますか?

答えて

1

Cloudantがテンポラリビューを禁止するのは、縮尺が調整されていないためです。定義されたビューを持つデザイン文書を作成する必要があります。

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

私はcouchdb.pyでそれを行う方法について確認していないが、あなたは別のPythonライブラリをしようとする場合があります。ここでは、設計文書がそれに定義されたビューのどのようなものであるかへのリンクです。ここでcouchqueryおそらくcouchdbkitを使用する必要があります

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

+0

これでビューを作成することができます。次のステップは、couchdb-pythonのListField内の特定の値に対するビュー要求を送信する方法を理解することです。 – radpotato

+3

リクエストのようなプレーンなHTTPライブラリの使用をお勧めします。 –

0

でビューを作成に関するセクションへのリンクです。ビューを簡単に設定できます。私はもうCloudantで一時的なビューを使用することはできないと思います。

2

これは私が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)