使用pip安裝:html
>pip install couchbase --quiet
確認是否安裝成功:python
>python -c "import couchbase"
from couchbase import Couchbase from couchbase.exceptions import CouchbaseError c = Couchbase.connect(bucket='beer-sample', host='localhost') try: beer = c.get("aass_brewery-juleol") except CouchbaseError as e: print "Couldn't retrieve value for key", e # Rethrow the exception, making the application exit raise doc = beer.value # Because Python 2.x will complain if an ASCII format string is used # with Unicode format values, we make the format string unicode as well. print unicode("{name}, ABV: {abv}").format(name=doc['name'], abv=doc['abv']) doc['comment'] = "Random beer from Norway" try: result = c.replace("aass_brewery-juleol", doc) print result except CouchbaseError as e: print "Couldn't replace key" raise
set(key, value)git
Stores the document value under the key. If the key did not previously exist, it is created. If the key already exists, its existing value is overwritten with the new contents of value.
add(key, value)github
Stores the document value under the key, but only if key does not already exist. If key already exists, an exception is thrown.
replace(key, value)json
Replace is the inverse of add. It sets the contents of key to value, but only if the key already exists. If the key does not already exist, an exception is thrown.
delete(key)api
Deletes the key from the bucket. Future attempts to access this key via get raise an exception until something is stored again for this key using one of the set methods.
#無異常處理 client.store("my list", []) result = client.get("my list") doc = result.value #異常處理版, 單請求 result = client.get("non-exist-key", quiet=True) if result.success: print "Got document OK" else: print ("Couldn't retrieve document. " "Result was received with code"), result.rc #異常處理版,全部鏈接請求 client = Couchbase.connect(bucket='default', quiet=True) result = client.get("non-exist-key") if result.success: print "Got document OK" else: print "Couldn't retrieve document"
client.set_multi({ 'sheep_counting' : ['first sheep', 'second sheep'], 'famous_sheep' : {'sherry lewis' : 'Lamb Chop'} }) keys = ('sheep_counting', 'famous_sheep') results = client.get_multi(keys) for key, result in results.items(): doc = result.value #異常處理版 results = client.get_multi(("i exist", "but i don't"), quiet=True) #迭代判斷 for key results: if result.success: print "Got document OK" doc = result.value else: print "Couldn't retrieve document" #一次判斷全部 #if not results.all_ok: #print "Couldn't get all keys"
文檔不存在時 ,拋出 couchbase.exceptions.NotFoundErrorapp
使用 Connection.quiet 能夠改變異常處理的行爲less
results = client.query("beer", "brewery_beers", include_docs=True, limit=5) for result in results: print "key is %r" % (result.key) doc = result.doc.value if doc['type'] == "beer": print "Got a beer. It's got %0.2f ABV" % (doc['abv'],)
include_docsdom
This boolean parameter indicates whether the corresponding document should be retrieved for each row fetched. If this is true, the doc property of the ViewRow object yielded by the iterator returned by query contains a Result object that contains the document for the key.
reducefetch
This boolean parameter indicates whether the server should also pass the results to the view’s reduce function. An exception is raised if the view does not have a reduce method defined.
limit
This numeric parameter indicates the maximum amount of results to fetch from the query. This parameter is handy if your query can produce a lot of results.
descending
This boolean parameter indicates that the results should be returned in reverse order.
stale
This boolean parameter controls the tradeoff between performance and freshness of data.
debug
This boolean parameter fetches low-level debugging information from the view engine.
streaming
This boolean parameter indicates whether the view results should be decoded in a streaming manner. When enabled, the iterator internally fetches chunks of the response as required. As this is less efficient than fetching all results at once, it is disabled by default, but can be very useful if you have a large dataset because it prevents the entire view from being buffered in memory.
Python SDK 默認使用 編碼格式JSON,使用json標準庫
也能夠指定使用其餘編碼格式:
import pprint from couchbase import Couchbase, FMT_PICKLE c = Couchbase.connect(bucket='default') c.set("a_python_object", object(), format=FMT_PICKLE) c.set("a_python_set", set([1,2,3]), format=FMT_PICKLE) pprint.pprint(c.get("a_python_object").value) pprint.pprint(c.get("a_python_set").value)
Output:
<object object at 0x7fa7d0ad80e0> set([1, 2, 3])