4

これに対する明白な答えがあるかもしれませんが、どこにも見つけられないようです: cloudant サーバーに保存されている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 に組み込む方法がわかりません。これを回避する簡単な方法はありますか?

4

4 に答える 4

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)
于 2014-06-26T14:17:37.870 に答える
1

Cloudant が一時ビューを禁止する理由は、それらがスケーリングしないためです。ビューが定義された設計ドキュメントを作成する必要があります。以下は、ビューが定義された設計ドキュメントがどのようなものかへのリンクです。

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

私はcouchdb.pyでそれを行う方法について確信が持てませんが、別のpythonライブラリを試してみることをお勧めします. これは、couchquery でのビューの作成に関するセクションへのリンクです。

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

于 2011-10-18T17:34:43.770 に答える
0

おそらくcupdbkitを使用する必要があります。ビューの設定が簡単になります。Cloudant で一時ビューを使用することはもうないと思います。

于 2013-04-17T16:03:25.343 に答える