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 ...
随机推荐
- 如何用Python在10分钟内建立一个预测模型
转载自:https://baijia.baidu.com/s?old_id=307995 最近,我从孙子(指<孙子兵法>——译者注)那里学到了一些策略:速度和准备 “兵之情主速,乘人之不及 ...
- DP HDOJ 5492 Find a path
题目传送门 题意:从(1, 1)走到(n, m),每次往右或往下走,问(N+M−1)∑(Ai−Aavg)2 的最小值 分析:展开式子得到(N+M−1)∑(Ai2) - (∑(Ai))2的最小值.用普通 ...
- 138 Copy List with Random Pointer 复制带随机指针的链表
给出一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点.返回一个深拷贝的链表. 详见:https://leetcode.com/problems/copy-list- ...
- [在读]javascript框架设计
司徒正美的书,内容我觉得不错,国内的书很少会讲这些.当然也有很多人吐槽它只贴代码没有解释,文笔不够优美啥啥的,我想说,不要在意这些细节,反正是值得买的一本.
- mvc报( 检测到有潜在危险的 request.form 值 )错的解决方案
今天在做项目中遇到了报( 检测到有潜在危险的 request.form 值 )错,百度过后解决了该问题,出此问题主要还是因为提交的Form中有HTML字符串,例如你在TextBox中输入了html标签 ...
- gulp插件之gulp-mock-server
本文讲gulp-mock-server的应用,用于虚拟一个服务器,模拟后台返回json数据给前端,这样可以一定程度上实现前后端分离,约定好接口之后,前后端即可同时开发,从而提高效率. 在gulpfil ...
- 实战角度比较EJB2和EJB3的架构异同
] EJB编程模型的简化 首先,EJB3简化的一个主要表现是:在EJB3中,一个EJB不再象EJB2中需要两个接口一个Bean实现类,虽然我们以前使用JBuilder这样可视化开发工具自动生成了EJB ...
- SQL Server2012 T-SQL对分页的增强尝试
简介 SQL Server 2012中在Order By子句之后新增了OFFSET和FETCH子句来限制输出的行数从而达到了分页效果.相比较SQL Server 2005/2008的ROW_Numbe ...
- UVA 1479 Graph and Queries (Treap)
题意: 给一个无向图,再给一系列操作(以下3种),输出最后的平均查询结果. (1)D X 删除第x条边. (2)Q X k 查询与点X相连的连通分量中第k大的点的权值. (3)C X v 将点X的 ...
- 职业生涯手记——电视剧剧情O.O
很多电视剧.偶像剧.电影里出现过一些场景,从来没想过狗血剧情是来源于现实.. 直到上周一开始,我慢慢相信了.. 事情是这样的. 我们小组有个组员H,从上周一开始他每天都去公司的座机电话接1~2个电话, ...