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 ...
随机推荐
- AtCoder Regular Contest 076 E - Connected?
题目传送门:https://arc076.contest.atcoder.jp/tasks/arc076_c 题目大意: 给定一个\(R×C\)的矩阵,然后给定\(N\)对点,每对点坐标为\((X_{ ...
- April Fools Contest 2017 A
Description Input The input contains a single integer a (1 ≤ a ≤ 30). Output Output a single integer ...
- 洛谷 P2841 A*B Problem
https://www.luogu.org/problemnew/show/P2841 根本不会啊... 大概就是:如果两个数模a的结果相同,那么它们前面同时加上一个0或1后模a的结果仍然相同,因此可 ...
- SPRING-BOOT系列之简介
来自:51CTO的学习视频,本博客作为一个知识点记录以及代码验证 spring boot 特点 1. 为基于spring的开发提供更快的入门体验 2. 创建可以独立运行的spring应用 3. 直接嵌 ...
- PHP生成和获取XML格式数据
在做数据接口时,我们通常要获取第三方数据接口或者给第三方提供数据接口,而这些数据格式通常是以XML或者JSON格式传输,本文将介绍如何使用PHP生成XML格式数据供第三方调用以及如何获取第三方提供的X ...
- P2629 好消息,坏消息
题目描述 uim在公司里面当秘书,现在有n条消息要告知老板.每条消息有一个好坏度,这会影响老板的心情.告知完一条消息后,老板的心情等于之前老板的心情加上这条消息的好坏度.最开始老板的心情是0,一旦老板 ...
- JDK NIO SelectionKey bug
此bug项目中使用elasticSearch中出现的,原因是,nio事件选择器,在特性内核下以及jdk6版本中,出现不hold线程,死循环获取事件的bug,导致cup使用率过高: 此bug在官网已被修 ...
- ES6学习笔记(3)----字符串的扩展
参考书<ECMAScript 6入门>http://es6.ruanyifeng.com/ 字符串的扩展ES6之前只能识别\u0000 - \uFFFF 之间的字符,超过此范围,识别会出错 ...
- ios 苹果原生系统定位 CLLocationManager
首先要干这些事 下面的方法亲测可用 ------------------------------------------------------------ DNLogFUNC //初始化位置管理对象 ...
- Android学习笔记--Intent
Intent是android四大组件之间交互的一种重要方式.Intent可以指明当前要执行的动作,也可以指明要传递的数据.Intent可以用来启动活动,启动服务,发送广播. Intent分为两种:1. ...