Couchbase III(Python Library)
Couchbase III(Python Library)
第一步
安装
使用pip安装:
>pip install couchbase --quiet
确认是否安装成功:
>python -c "import couchbase"
API 第一印象
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)
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)
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)
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)
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.NotFoundError
使用 Connection.quiet 可以改变异常处理的行为
获取View
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_docs
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.
reduce
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])
链接
Couchbase III(Python Library)的更多相关文章
- Where is the python library installed?
configure: error: Could not link test program to Python. Maybe the main Python library has been inst ...
- Python library not found: libpython2.7mu.so.1.0
在使用pyinstaller生成python可执行文件的时候,包错误,提示有几个依赖的库找不到:Python library not found: libpython2.7mu.so.1.0 参考st ...
- kivy.org - Open source Python library for rapid development of applications
kivy.org - Open source Python library for rapid development of applicationsthat make use of innovati ...
- Scipy - Python library - Math tool - Begin
Introduction Scientific Computing Tools for Python. Seen in Scipy.org. Environment Linux, CentOS 7 w ...
- error: Unable to find vcvarsall.bat while install python library by pip install or python setup.py install.
Python 2.7 会搜索 Visual Studio 2008. 如果你电脑上没有这个版本的话,比如只有: 1.Visual Studio 2010,在cmd里面执行:SET VS90COMNTO ...
- [leetcode]Best Time to Buy and Sell Stock III @ Python
原题地址:https://oj.leetcode.com/problems/best-time-to-buy-and-sell-stock-iii/ 题意: Say you have an array ...
- SimpleCV install and "You need the python image library to save by filehandle"
2015年5月3日 22:15:43 在win7下安装了python.simplecv,试着运行simplecv官网第一个hello world程序结果报错,提示说%python%/lib/site- ...
- Python Standard Library
Python Standard Library "We'd like to pretend that 'Fredrik' is a role, but even hundreds of vo ...
- Libsvm:脚本(subset.py、grid.py、checkdata.py) | MATLAB/OCTAVE interface | Python interface
1.脚本 This directory includes some useful codes: 1. subset selection tools. (子集抽取工具) subset.py 2. par ...
随机推荐
- Qt之对话框QDialog
这一节主要讲述对话框类,先讲述两种不同类型的对话框,再介绍Qt提供的几个标准对话框.对应本节的内容,可以在帮助索引中查看 QDialog 和 Dialog Windows 关键字. 一.模态和非模态对 ...
- Substring CodeForces - 919D
http://codeforces.com/problemset/problem/919/D 就是先判环,如果有环就-1,否则对每个字母分开跑一下dp 错误记录: 1.有向图判环,自环一定要特判!(不 ...
- java 替换字符串模板(模板渲染)
java渲染字符串模板,也就是说在java字符串模板中设置变量字符串,使用变量去渲染指定模板中设置好的变量字符串.下面介绍4种替换模板方式: 1.使用内置String.format String me ...
- el-select,选择一行,取值行的对象.
<el-select v-model="set_invoice_form.InvoiceType" placeholder="请选择" :disabl ...
- iOS 利用UIWebView与JavaScript交互的最简单办法
这里说的是针对iOS的!并且方法很简单!!并且验证可行的!!! 1, UIWebView调用 JavaScript 的函数: NSString* strValue = [webView stringB ...
- centos 6.2用yum安装中文输入法
centos 6.2用yum安装中文输入法 1.su root 2.yum install "@Chinese Support" 3.exit 4.回到桌面,system-> ...
- Java Script 学习笔记(一)
示例如下: JavaScript-警告(alert 消息对话框) 我们在访问网站的时候,有时会突然弹出一个小窗口,上面写着一段提示信息文字.如果你不点击“确定”,就不能对网页做任何操作,这个小窗口就是 ...
- c# 移除数组为空元素
通过字符串分割取得的数组中,有的时候可能需要处理除掉数组元素值为空的情况,所以可以按照如下代码完成: string rs="";//需要分割的字符串 char[] chspilt= ...
- 获取父页面的dom元素
$("li.jericho_tabs", window.top.document); 上面的代码意思是获取父页面的li元素,class为jericho_tabs的所有元素.
- docker 搭建 Java Web 运行环境
安装环境:jdk,tomcat,mysql,nginx