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

If you wish to enable the experimental tracing feature, set the PYCBC_TRACING_ENABLE environment variable.

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

This version

2.4.2

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.2.tar.gz (317.5 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.2.win-amd64-py3.4.exe (842.3 kB view details)

Uploaded Source

couchbase-2.4.2.win-amd64-py3.3.exe (839.7 kB view details)

Uploaded Source

couchbase-2.4.2.win-amd64-py2.7.exe (850.9 kB view details)

Uploaded Source

couchbase-2.4.2.win32-py3.4.exe (751.5 kB view details)

Uploaded Source

couchbase-2.4.2.win32-py3.3.exe (748.9 kB view details)

Uploaded Source

couchbase-2.4.2.win32-py2.7.exe (757.9 kB view details)

Uploaded Source

File details

Details for the file couchbase-2.4.2.tar.gz.

File metadata

  • Download URL: couchbase-2.4.2.tar.gz
  • Upload date:
  • Size: 317.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.9.1 pkginfo/1.4.1 requests/2.18.4 setuptools/39.2.0 requests-toolbelt/0.8.0 tqdm/4.19.4 CPython/3.6.2

File hashes

Hashes for couchbase-2.4.2.tar.gz
Algorithm Hash digest
SHA256 1126c80bc1935d77ea86f723893189fa6a678a16650c6a597122b9de704a60cc
MD5 8e46b1fc95d0afb1f7bb8d3a07186b48
BLAKE2b-256 d2b97288c021660b93f822e518d6cb196af669055e3c59b4a665fb6aa238a95f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: couchbase-2.4.2.win-amd64-py3.4.exe
  • Upload date:
  • Size: 842.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.9.1 pkginfo/1.4.1 requests/2.18.4 setuptools/39.2.0 requests-toolbelt/0.8.0 tqdm/4.19.4 CPython/3.6.2

File hashes

Hashes for couchbase-2.4.2.win-amd64-py3.4.exe
Algorithm Hash digest
SHA256 b0aacd51025289187a393d6a86f6fa22b7e39f0512ff6070167164b075fb78bb
MD5 cb3d024a955625db0c32aa003aa27a6b
BLAKE2b-256 62116b02bb3a673bb6d444633d3b050f434cf86540f299a7785e382b96ec43e1

See more details on using hashes here.

File details

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

File metadata

  • Download URL: couchbase-2.4.2.win-amd64-py3.3.exe
  • Upload date:
  • Size: 839.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.9.1 pkginfo/1.4.1 requests/2.18.4 setuptools/39.2.0 requests-toolbelt/0.8.0 tqdm/4.19.4 CPython/3.6.2

File hashes

Hashes for couchbase-2.4.2.win-amd64-py3.3.exe
Algorithm Hash digest
SHA256 e593edbe7f40311ed7f3d7de6232a0ca94343be4898169af0abf7247479d58ac
MD5 6a6a1510e1bce5acd7f506df82a84c4d
BLAKE2b-256 c7940a50967e01789120e4888fea5a5a7b27626a6039a95527bd91bb66e4475e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: couchbase-2.4.2.win-amd64-py2.7.exe
  • Upload date:
  • Size: 850.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.9.1 pkginfo/1.4.1 requests/2.18.4 setuptools/39.2.0 requests-toolbelt/0.8.0 tqdm/4.19.4 CPython/3.6.2

File hashes

Hashes for couchbase-2.4.2.win-amd64-py2.7.exe
Algorithm Hash digest
SHA256 d75511104c0e0b0f78291b0adf4ceb3ca37700e4060c0a847dce751029a4076c
MD5 78e0a80a2e007bdafa89fdddf2a209c7
BLAKE2b-256 6379c2d6aa09b585aad7f5f55205c838b5fe3f1fbb65a449d3a4efb8e71872de

See more details on using hashes here.

File details

Details for the file couchbase-2.4.2.win32-py3.4.exe.

File metadata

  • Download URL: couchbase-2.4.2.win32-py3.4.exe
  • Upload date:
  • Size: 751.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.9.1 pkginfo/1.4.1 requests/2.18.4 setuptools/39.2.0 requests-toolbelt/0.8.0 tqdm/4.19.4 CPython/3.6.2

File hashes

Hashes for couchbase-2.4.2.win32-py3.4.exe
Algorithm Hash digest
SHA256 434327b8591aa5b7c0b9edcf2cb888f2890849705e91edc2e223c214b1777db7
MD5 5a83ba37412db5a5ce904ccb9d677c1c
BLAKE2b-256 6a54785fb7db6f29f88869c1f3c82f53c5424c07b228fd8f1fc6d265e586a1d8

See more details on using hashes here.

File details

Details for the file couchbase-2.4.2.win32-py3.3.exe.

File metadata

  • Download URL: couchbase-2.4.2.win32-py3.3.exe
  • Upload date:
  • Size: 748.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.9.1 pkginfo/1.4.1 requests/2.18.4 setuptools/39.2.0 requests-toolbelt/0.8.0 tqdm/4.19.4 CPython/3.6.2

File hashes

Hashes for couchbase-2.4.2.win32-py3.3.exe
Algorithm Hash digest
SHA256 ab9ee1adf1e46cdc43f82af11d4c5626a7ce48f55a244e7b781015ffd7339097
MD5 d686391ec0c95d61cd66c5cd5405568b
BLAKE2b-256 f28a4bef76c2e4c37361d9df7667e4a7190dae6a3ae09620be9a3d9833e467ce

See more details on using hashes here.

File details

Details for the file couchbase-2.4.2.win32-py2.7.exe.

File metadata

  • Download URL: couchbase-2.4.2.win32-py2.7.exe
  • Upload date:
  • Size: 757.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.9.1 pkginfo/1.4.1 requests/2.18.4 setuptools/39.2.0 requests-toolbelt/0.8.0 tqdm/4.19.4 CPython/3.6.2

File hashes

Hashes for couchbase-2.4.2.win32-py2.7.exe
Algorithm Hash digest
SHA256 91a9495bfa10f748023e0bd3ec9128586228728891306b78ed2ace7d942926f4
MD5 aa7dddbf8d5ec5264b09572f3ea3bb21
BLAKE2b-256 7a3ca9be0a716d2932fbb17579a2ba0cf61cd70887ff6ac7ca64069b55afc097

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