Skip to main content

Python Client for Couchbase

Project description

Client for Couchbase.

Building and Installing

This only applies to building from source. If you are using a Windows installer then everything (other than the server) is already included. See below for windows snapshot releases.

Also note that these instructions apply to building from source. You can always get the latest supported release version from pypi.

If you have a recent version of pip, you may use the latest development version by issuing the following incantation

pip install git+git://github.com/couchbase/couchbase-python-client

Prerequisites

Building

The following will compile the module locally; you can then test basic functionality including running the examples.

python setup.py build_ext --inplace

If your libcouchbase install is in an alternate location (for example, /opt/local/libcouchbase), you may add extra directives, like so

python setup.py build_ext --inplace \
    --library-dir /opt/local/libcouchbase/lib \
    --include-dir /opt/local/libcouchbase/include

Or you can modify the environment CFLAGS and LDFLAGS variables.

Installing

python setup.py install

Using

Authentication is handled differently depending on what version of Couchbase Server you are using:

Couchbase Server < 5.0

Each bucket can optionally have a password. You may omit the authenticator if you are only working with password-less buckets.

>>> from couchbase.cluster import Cluster, ClassicAuthenticator
>>> cluster = Cluster('couchbase://localhost')
>>> cluster.authenticate(ClassicAuthenticator(buckets={'bucket-name': 'password'}))
>>> bucket = cluster.open_bucket('bucket-name')

Couchbase Server >= 5.0

Role-Based Access Control (RBAC) provides discrete username and passwords for an application that allow fine-grained control. The authenticator is always required.

>>> from couchbase.cluster import Cluster, PasswordAuthenticator
>>> cluster = Cluster('couchbase://localhost')
>>> cluster.authenticate(PasswordAuthenticator('username', 'password'))
>>> bucket = cluster.open_bucket('bucket-name')

Here’s an example code snippet which sets a key and then reads it

>>> bucket.upsert("key", "value")
OperationResult<RC=0x0, Key=key, CAS=0x31c0e3f3fc4b0000>
>>> res = bucket.get("key")
>>> res
ValueResult<RC=0x0, Key=key, Value=u'value', CAS=0x31c0e3f3fc4b0000, Flags=0x0>
>>> res.value
u'value'
>>>

You can also use views

>>> resultset = bucket.query("beer", "brewery_beers", limit=5)
>>> resultset
View<Design=beer, View=brewery_beers, Query=Query:'limit=5', Rows Fetched=0>
>>> for row in resultset: print row.key
...
[u'21st_amendment_brewery_cafe']
[u'21st_amendment_brewery_cafe', u'21st_amendment_brewery_cafe-21a_ipa']
[u'21st_amendment_brewery_cafe', u'21st_amendment_brewery_cafe-563_stout']
[u'21st_amendment_brewery_cafe', u'21st_amendment_brewery_cafe-amendment_pale_ale']
[u'21st_amendment_brewery_cafe', u'21st_amendment_brewery_cafe-bitter_american']

Twisted API

The Python client now has support for the Twisted async network framework. To use with Twisted, simply import txcouchbase.connection instead of couchbase.bucket

from twisted.internet import reactor
from txcouchbase.bucket import Bucket

cb = Bucket('couchbase://localhost/default')
def on_upsert(ret):
    print "Set key. Result", ret

def on_get(ret):
    print "Got key. Result", ret
    reactor.stop()

cb.upsert("key", "value").addCallback(on_upsert)
cb.get("key").addCallback(on_get)
reactor.run()

# Output:
# Set key. Result OperationResult<RC=0x0, Key=key, CAS=0x9a78cf56c08c0500>
# Got key. Result ValueResult<RC=0x0, Key=key, Value=u'value', CAS=0x9a78cf56c08c0500, Flags=0x0>

The txcouchbase API is identical to the couchbase API, except that where the synchronous API will block until it receives a result, the async API will return a Deferred which will be called later with the result or an appropriate error.

GEvent API

from gcouchbase.bucket import Bucket

conn = Bucket('couchbase://localhost/default')
print conn.upsert("foo", "bar")
print conn.get("foo")

The API functions exactly like the normal Bucket API, except that the implementation is significantly different.

Asynchronous (Tulip) API

This module also supports Python 3.4/3.5 asynchronous I/O. To use this functionality, import the couchbase.experimental module (since this functionality is considered experimental) and then import the acouchbase module. The acouchbase module offers an API similar to the synchronous client:

import asyncio

import couchbase.experimental
couchbase.experimental.enable()
from acouchbase.bucket import Bucket


async def write_and_read(key, value):
    cb = Bucket('couchbase://10.0.0.31/default')
    await cb.connect()
    await cb.upsert(key, value)
    return await cb.get(key)

loop = asyncio.get_event_loop()
rv = loop.run_until_complete(write_and_read('foo', 'bar'))
print(rv.value)

PyPy

PyPy is an alternative high performance Python implementation. Since PyPy does not work well with C extension modules, this module will not work directly. You may refer to the alternate implementation based on the cffi module: https://github.com/couchbaselabs/couchbase-python-cffi

Other Examples

There are other examples in the examples directory. To run them from the source tree, do something like

PYTHONPATH=$PWD ./examples/bench.py -U couchbase://localhost/default

Building documentation

The documentation is using Sphinx and also needs the numpydoc Sphinx extension. In order for the documentation to build properly, the C extension must have been built, since there are embedded docstrings in there as well.

To build the documentation, go into the docs directory and run

make html

The HTML output can be found in docs/build/html/.

Alternatively, you can also build the documentation (after building the module itself) from the top-level directory:

python setup.py build_sphinx

Once built, the docs will be in in build/sphinx/html

Testing

For running the tests, you need the standard unittest module, shipped with Python. Additionally, the testresources package is required.

To run them, use either py.test, unittest or trial.

The tests need a running Couchbase instance. For this, a tests.ini file must be present, containing various connection parameters. An example of this file may be found in tests.ini.sample. You may copy this file to tests.ini and modify the values as needed.

The simplest way to run the tests is to declare a bucket_prefix in the tests.ini file and run the setup_tests.py script to create them for you.

python setup_tests.py

To run the tests:

nosetests

Support & Additional Resources

If you found an issue, please file it in our JIRA. You can ask questions in our forums or in the #libcouchbase channel on freenode.

The official documentation can be consulted as well for general Couchbase concepts and offers a more didactic approach to using the SDK.

License

The Couchbase Python SDK is licensed under the Apache License 2.0.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

couchbase-2.4.0a1.tar.gz (258.6 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

couchbase-2.4.0a1.win-amd64-py3.4.exe (781.1 kB view details)

Uploaded Source

couchbase-2.4.0a1.win-amd64-py3.3.exe (778.5 kB view details)

Uploaded Source

couchbase-2.4.0a1.win-amd64-py2.7.exe (789.8 kB view details)

Uploaded Source

couchbase-2.4.0a1.win32-py3.4.exe (696.4 kB view details)

Uploaded Source

couchbase-2.4.0a1.win32-py3.3.exe (693.8 kB view details)

Uploaded Source

couchbase-2.4.0a1.win32-py2.7.exe (701.7 kB view details)

Uploaded Source

File details

Details for the file couchbase-2.4.0a1.tar.gz.

File metadata

  • Download URL: couchbase-2.4.0a1.tar.gz
  • Upload date:
  • Size: 258.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for couchbase-2.4.0a1.tar.gz
Algorithm Hash digest
SHA256 6349ee43fd66e10a2b41f715c26cb20ece796b27229dc17440542ec97ab5bc3e
MD5 06ecbfe605a85028b029e9b5f70200f6
BLAKE2b-256 4e5e0e4bb712977176345258e1432aa905c3582ce18749251f7f760ec12c718e

See more details on using hashes here.

File details

Details for the file couchbase-2.4.0a1.win-amd64-py3.4.exe.

File metadata

File hashes

Hashes for couchbase-2.4.0a1.win-amd64-py3.4.exe
Algorithm Hash digest
SHA256 fc4b72c1a60ee0f6d83a27648fa74e5e51fb0a39388e93c80b360b3053658da6
MD5 963fdf34274294b8984dcf89b017f9d9
BLAKE2b-256 21f956bc7739a381c95ad685762cbc26f017be21c5122cba118b9d7b9e733587

See more details on using hashes here.

File details

Details for the file couchbase-2.4.0a1.win-amd64-py3.3.exe.

File metadata

File hashes

Hashes for couchbase-2.4.0a1.win-amd64-py3.3.exe
Algorithm Hash digest
SHA256 46876c248f45da6c3410ddda6695eeff360ca4ba06da5dc8562ec165a1ea9157
MD5 17a19cd392d6c75cf6e2969a2ea78771
BLAKE2b-256 7739f8482b16471fea45a0c1d83285c69e55c9e23263a49f90557868eeaf7202

See more details on using hashes here.

File details

Details for the file couchbase-2.4.0a1.win-amd64-py2.7.exe.

File metadata

File hashes

Hashes for couchbase-2.4.0a1.win-amd64-py2.7.exe
Algorithm Hash digest
SHA256 030b35b33e24ffe410d44c76e83f6127cd84e71010719cedf45e4576df7bbb33
MD5 9c1a2af50af94eaaecbcce964ce538cc
BLAKE2b-256 b30c63f0eccf474bd2aa2445c0beae940117f8ff5ee0c165ac75aaca40460026

See more details on using hashes here.

File details

Details for the file couchbase-2.4.0a1.win32-py3.4.exe.

File metadata

File hashes

Hashes for couchbase-2.4.0a1.win32-py3.4.exe
Algorithm Hash digest
SHA256 c90511850faa21817a8d22ff638c449158691a688478a25e73b55362e81bd91a
MD5 b750e15ca211833c6013feca9a14279d
BLAKE2b-256 9046af9ade547cb3826a7017c2697920e6e71e75fb8f4e04e912b42250ac100c

See more details on using hashes here.

File details

Details for the file couchbase-2.4.0a1.win32-py3.3.exe.

File metadata

File hashes

Hashes for couchbase-2.4.0a1.win32-py3.3.exe
Algorithm Hash digest
SHA256 70b5a4375191ed7dfe23d00f1c6607715a65397f4901dcd0176faaaa519a341d
MD5 099a38da638f01f45328289b585b2452
BLAKE2b-256 ddb91c1813ace145098d35f32b44f4eae8fc7efb13d866a5e78176a205e1261f

See more details on using hashes here.

File details

Details for the file couchbase-2.4.0a1.win32-py2.7.exe.

File metadata

File hashes

Hashes for couchbase-2.4.0a1.win32-py2.7.exe
Algorithm Hash digest
SHA256 056eb4459da5bf53560c86dcd14a10071fc6179a2dc6651d3ffe1ebd4e7964e0
MD5 8e390cf6043627115b6fd043012f4210
BLAKE2b-256 5ff107ae80ecc9e00ddc3ca7aec944e5b9abb5dbf6b0299dec623350231e6a5a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page