Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Couchbase .Python client library (official)
Python
Pull request Compare This branch is 103 commits ahead, 457 commits behind couchbase:master.

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
couchbase
httplib2
simplejson
.gitignore
LICENSE.txt
MANIFEST.in
README.txt
setup.py
test.ini.template
uuid.py

README.txt

========================
COUCHBASE PYTHON LIBRARY
========================

This library provides methods to connect to both the couchbase
memcached interface and the couchbase rest api interface.

Two simple use cases to set and get a key in the default bucket
and then create a new bucket using the memcached and rest clients::

    #!/usr/bin/env python

    from couchbase.couchbaseclient import CouchbaseClient
    from couchbase.couchbaseclient import MemcachedTimeoutException
    from couchbase.rest_client import RestConnection

    client = CouchbaseClient("http://localhost:8091/pools/default",
                             "default","",False)
    client.set("key1", 0, 0, "value1")
    client.get("key1")

    server_info = {"ip":"localhost",
                   "port":8091,
                   "username":"Administrator",
                   "password":"password"}
    rest = RestConnection(server_info)
    rest.create_bucket(bucket='newbucket',
                       ramQuotaMB=100,
                       authType='none',
                       saslPassword='',
                       replicaNumber=1,
                       proxyPort=11215,
                       bucketType='membase')

Example code that creates buckets and then does sets, gets and views using
the unified client::

    import couchbase

    # connect to a couchbase server
    cb = couchbase.Server('localhost:8091',
                          username='Administrator',
                          password='password')

    # create default bucket if it doesn't exist
    try:
        cb.create('default')
    except:
        pass

    # fetch a Bucket with subscript
    default_bucket = cb['default']
    # set a value with subscript (equivilent to .set)
    default_bucket['key1'] = 'value1'

    # fetch a bucket with a function
    default_bucket2 = cb.bucket('default')
    # set a json value with subscript (equivilent to .set)
    default_bucket2['key2'] = {'value':'value2','expiration':0,'flags':10}

    # set a value with a function
    default_bucket.set('key3', 0, 0, 'value3')

    # fetch a key with a function
    print 'key1 ' + str(default_bucket.get('key1'))
    print 'key2 ' + str(default_bucket2.get('key2'))
    # fetch a key with subscript
    print 'key3 ' + str(default_bucket2['key3'])

    # delete a bucket
    cb.delete('default')
    try:
        cb['default']
    except Exception as ex:
        print ex

    # create a new bucket
    try:
        newbucket = cb.create('newbucket', ram_quota_mb=100, replica=1)
    except:
        newbucket = cb['newbucket']

    # set a json document with a function
    # this will translate $flags and $expiration to memcached protocol
    # automatically generate the _id
    doc_id = newbucket.save({'type':'item',
                             'value':'json test',
                             '$flags':25})
    print doc_id + ' ' + str(newbucket[doc_id])
    # use a provided _id
    doc_id = newbucket.save({'_id':'key4',
                             'type':'item',
                             'value':'json test',
                             '$flags':25})
    print doc_id + ' ' + str(newbucket[doc_id])

    design = {
        "_id" : "_design/testing",
        "language" : "javascript",
        "views" : {
            "all" : {
                "map" : '''function (doc) {\n    emit(doc, null);\n}'''
                },
            },
        }
    # save a design document
    # right now with no _rev, we can only create, we can't update
    try:
        doc_id = newbucket.save(design)
    except:
        doc_id = "_design/testing"

    rows = newbucket.view("_design/testing/_view/all")
    for row in rows:
        print row


This version requires Python 2.6 or later

Open Issues : http://www.couchbase.org/issues/browse/PYCBC

=============
RUNNING TESTS
=============

Requirements:
* easy_install nose
* pip install nose-testconfig

We're now using nose to run our tests. There's a supplied
test.ini.template that you can customize to match your installed
environment. Copy test.ini.template to test.ini, customize, and
then run the following command:

    nosetests --tc-file=test.ini

Adding coverage information is as easy as install coverage and running
nosetests with these settings:

    nosetests --tc-file=test.ini --with-coverage
--cover-package=couchbase --cover-html

This will output coverage reports into the 'cover' directory.
Something went wrong with that request. Please try again.