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.3.3.tar.gz (265.7 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.3.3.win-amd64-py3.4.exe (765.4 kB view details)

Uploaded Source

couchbase-2.3.3.win-amd64-py3.3.exe (765.5 kB view details)

Uploaded Source

couchbase-2.3.3.win-amd64-py2.7.exe (776.6 kB view details)

Uploaded Source

couchbase-2.3.3.win32-py3.4.exe (683.6 kB view details)

Uploaded Source

couchbase-2.3.3.win32-py3.3.exe (683.8 kB view details)

Uploaded Source

couchbase-2.3.3.win32-py2.7.exe (691.9 kB view details)

Uploaded Source

File details

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

File metadata

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

File hashes

Hashes for couchbase-2.3.3.tar.gz
Algorithm Hash digest
SHA256 86715836aec5675a64958369cb9d20e96e75a9c010ad2fd77804cb9d95535368
MD5 c7d580da2f38188fa4c86f38872934a3
BLAKE2b-256 85dbe92ccbbf878ad6f818a235289416144067951559a537950129007cad5ed3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for couchbase-2.3.3.win-amd64-py3.4.exe
Algorithm Hash digest
SHA256 5e48adfbdae4e1419b88a452b9c677b62a01d17671c1f0b6739e2f43b7acfe4a
MD5 4a1f9e5e699b79c5dab2185f47ff48e0
BLAKE2b-256 c8d13631545ae570aec6d1af8e0b1424e652dbecdcec48236b5d90d53d9b8727

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for couchbase-2.3.3.win-amd64-py3.3.exe
Algorithm Hash digest
SHA256 50a14010ce4941db7413cecdaa816d56856fc68827dffda5b090c08eff4ff22d
MD5 4aee2cf57e017952c4cea00a08bc2a78
BLAKE2b-256 a9123cbb9c77bd1033858131702089bed24a5185652b90dd5e74108a18220c9c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for couchbase-2.3.3.win-amd64-py2.7.exe
Algorithm Hash digest
SHA256 2716b31a668843463d9059a6be910b3a72eb56648fb073c925884712e5fe883e
MD5 d783c52f01319b8f628e22a6ece6b48b
BLAKE2b-256 2042a41d67be1234d60e312019da84cdd36356170eb665106256429f554551b4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for couchbase-2.3.3.win32-py3.4.exe
Algorithm Hash digest
SHA256 b8e8f7f0cf09f4d468a53061d5796dc2513fee3438f29abbd3f5885fc72ede3f
MD5 7c9afa6a48d6a4603379bf3ba20ed892
BLAKE2b-256 e79a2cd58a9e6fb9b713ac8b3f51a5d203909db1bc6d78584f73a9523a2a701c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for couchbase-2.3.3.win32-py3.3.exe
Algorithm Hash digest
SHA256 6eae15fe31d008145424d6be17b10a8b081a1b45f438e00e3620656b1881373c
MD5 d1259c7caa73f13efffe67747a1db4b4
BLAKE2b-256 2d5424c340b09a10543536524c97600d3741b3bb56ac5ee49f64a93e6f6a4f98

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for couchbase-2.3.3.win32-py2.7.exe
Algorithm Hash digest
SHA256 b16077147e5f230ab2fbc522141d97dbc31fc095897b3a8740a9c73454aec2d1
MD5 c413451c47b536147c76c1b9b2812f5d
BLAKE2b-256 ea2edb25441d77fbbf9c38e3083bb67d0c85c40586c05a24ca3c8b69f8f490a9

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