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)的更多相关文章

  1. Where is the python library installed?

    configure: error: Could not link test program to Python. Maybe the main Python library has been inst ...

  2. Python library not found: libpython2.7mu.so.1.0

    在使用pyinstaller生成python可执行文件的时候,包错误,提示有几个依赖的库找不到:Python library not found: libpython2.7mu.so.1.0 参考st ...

  3. 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 ...

  4. Scipy - Python library - Math tool - Begin

    Introduction Scientific Computing Tools for Python. Seen in Scipy.org. Environment Linux, CentOS 7 w ...

  5. 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 ...

  6. [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 ...

  7. 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- ...

  8. Python Standard Library

    Python Standard Library "We'd like to pretend that 'Fredrik' is a role, but even hundreds of vo ...

  9. 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 ...

随机推荐

  1. bzoj 5015 [Snoi2017]礼物

    题面 https://www.lydsy.com/JudgeOnline/problem.php?id=5015 题解 首先把k=1,k=2,k=3的手推一遍 然后发现一些规律 就是数列可以表示成$a ...

  2. 【模板】RMQ问题的ST表实现

    $RMQ$问题:给定一个长度为$N$的区间,$M$个询问,每次询问$[L_i,R_i]$这段区间元素的最大值/最小值. $RMQ$的高级写法一般有两种,即为线段树和$ST$表. 本文主要讲解一下$ST ...

  3. 转 做了两款数据库监控工具(mysql and nosql),打算在近期开源

    http://www.cnblogs.com/leefreeman/p/7297549.html 监控指标:https://www.linuxidc.com/Linux/2015-08/122009. ...

  4. storm的3节点集群详细启动步骤(非HA和HA)(图文详解)

    前期博客 apache-storm-1.0.2.tar.gz的集群搭建(3节点)(图文详解)(非HA和HA) 启动storm集群(HA) 本博文情况是 master(主) nimbus slave1( ...

  5. WebForm中 页面传参的总结

    页面与后台的数据传递是实现动态页面的前提---数据交互.无论是MVC还是WebFrom 都需要详细了解各种前后台的数据传输方式,熟悉每种方式的优缺点,这样才能提高网站的性能,技术上得到锻炼. 1.Fo ...

  6. linux小白成长之路13————用U盘安装linux服务器

    [内容指引] 制作CentOS安装引导盘: 安装CentOS: 相关设置: 一.制作CentOS安装引导盘 1.下载安装镜像文件 从官网下载iso文件: 网址:https://www.centos.o ...

  7. ES6学习笔记(10)----Set和Map数据结构

    参考书<ECMAScript 6入门>http://es6.ruanyifeng.com/ Set和Map数据结构 1.Set  基本用法    Set是一种新的数据结构,它的成员都是唯一 ...

  8. 使用cordova把h5应用打包成apk

    由于h5应用开发不是本例重点,因此直接提供一个最简单的h5应用代码,此应用使用vue-cli框架开发 此h5应用叫vue1,用webstrom打开vue1,进行npm install安装引用 vue1 ...

  9. 在git远程仓创建项目之后,提交本地项目的使用方法

    命令介绍 git 用户配置 git config --global user.name "张三" git config --global user.email "zhag ...

  10. Runtime理解

    动态语言 OC是一门不折不扣的动态语言,所以它的很多机制都是动态运行时决定的.这点和C语言不一样,C语言是静态绑定,也就是编译后所有的一切都已经决定了.这一点和C语言的函数指针有些类似,很多时候函数指 ...