Is flush method missing in couchbase python client?
Question: I did not find the flush button for bucket in couchbase admin UI at port 8091
.May be because of this <http://www.couchbase.com/issues/browse/MB-5351> .

Then I saw this [How to delete all items in the
bucket?](http://stackoverflow.com/questions/15966769/how-to-delete-all-items-
in-the-bucket) so I wanted to do flush in python client .

    
    
    import sys
    from couchbase import Couchbase
    from couchbase.exceptions import CouchbaseError
    try:
        client = Couchbase.connect(bucket='production',host='localhost',port=8091)
    except CouchbaseError as e:
        print " Sorry , we could not create connection to bucket specified , due to " , e
    else :
        print "Successfully made the connection to bucket "
    

Here client i did not find a method to flush . I tried intellisense in IDE .

Please guide me to flush the bucket via python client .


Answer: It appears that the couchbase python SDK does not currently provide a flush()
method. But since the flush method is provided through the couchbase REST API
you may use it to flush your bucket.

Reference: Couchbase REST API, Buckets API -
<http://docs.couchbase.com/admin/admin/REST/rest-bucket-intro.html>

The python SDK provides an **Admin** object which you can use to perform your
administrator tasks using REST using its **http_request** method. source code:
<https://github.com/couchbase/couchbase-python-
client/blob/master/couchbase/admin.py>

description of the Admin class (from source):

> An administrative connection to a Couchbase cluster.
>  
>  
>     With this object, you can do things which affect the cluster, such as
>     modifying buckets, allocating nodes, or retrieving information about
>     the cluster.
>  
>     This object should **not** be used to perform Key/Value operations. The
>     :class:`couchbase.bucket.Bucket` is used for that.
>  

Admin.http_request method description (from source):

>
>         Perform an administrative HTTP request. This request is sent out to
>         the administrative API interface (i.e. the "Management/REST API")
>         of the cluster.
>  
>         See <LINK?> for a list of available comments.
>  
>         Note that this is a fairly low level function. This class will with
>         time contain more and more wrapper methods for common tasks such
>         as bucket creation or node allocation, and this method should
>         mostly be used if a wrapper is not available.
>  

* * *

Example:

First make sure that the Flush option is enabled for your bucket.

I created a test bucket named "default" for the example and created 2
documents within the bucket.

    
    
    import sys
    from couchbase import Couchbase
    from couchbase.exceptions import CouchbaseError
    
    #import Admin module
    from couchbase.admin import Admin
    
    
    #make an administrative connection using Admin object
    try:
        admin = Admin(username='Administrator',password='password',host='localhost',port=8091)
    except CouchbaseError as e:
        print " Sorry , we could not create admin connection , due to " , e
    else :
        print "Successfully made an admin connection "
    
    
    #retrieve bucket information for bucket named "default" 
    #   "default" is just the name of the bucket I set up for trying this out
    try:
        htres = admin.http_request("/pools/default/buckets/default")
    except Exception as e:
        print "ERROR: ", e
        sys.exit()
    
    
    #print the current number of items in the "default" bucket
    #   "default" is just the name of the bucket I set up for trying this out
    print "# of items before flush: ", htres.value['basicStats']['itemCount']
    
    
    #flush bucket
    try:
        #the bucket information request returned the path to the REST flush method for this bucket
        #   the flush method requires a POST request
        htres = admin.http_request(htres.value['controllers']['flush'],"POST")
    except Exception as e:
        print "ERROR: ", e
        sys.exit()
    
    
    #re-retrieve bucket information for bucket named "default" 
    try:
        htres = admin.http_request("/pools/default/buckets/default")
    except Exception as e:
        print "ERROR: ", e
        sys.exit()
    
    
    #print the number of items in the "default" bucket (after flush)
    print "# of items after flush: ", htres.value['basicStats']['itemCount']
    

result:

>
>     Successfully made an admin connection
>     # of items before flush:  2
>     # of items after flush:  0
>  

