看来 couchbase python SDK 目前不提供 flush() 方法。但是由于 flush 方法是通过 couchbase REST API 提供的,因此您可以使用它来刷新您的存储桶。
参考:Couchbase REST API、Bucket API - http://docs.couchbase.com/admin/admin/REST/rest-bucket-intro.html
python SDK 提供了一个Admin对象,您可以使用该对象通过其http_request方法使用 REST 执行您的管理员任务。源代码:https ://github.com/couchbase/couchbase-python-client/blob/master/couchbase/admin.py
Admin 类的描述(来自源代码):
到 Couchbase 集群的管理连接。
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 方法描述(来自源代码):
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.
例子:
首先确保为您的存储桶启用了刷新选项。
我为示例创建了一个名为“default”的测试存储桶,并在存储桶中创建了 2 个文档。
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']
结果:
Successfully made an admin connection
# of items before flush: 2
# of items after flush: 0