如何使用python SDK为couchbase中的存储桶启用主索引?

时间:2017-07-21 15:34:42

标签: python couchbase

我是couchbase的新手,我正在尝试查询现有存储桶中的文档。当我在python中执行我的服务器代码时,会报告以下错误日志

HTTPError: <RC=0x3B[HTTP Operation failed. Inspect status code for details], HTTP Request failed. Examine 'objextra' for full result, Results=1, C Source=(src/http.c,140), OBJ=ViewResult<rc=0x3B[HTTP Operation failed. Inspect status code for details], value={u'status': u'fatal', u'metrics': {u'elapsedTime': u'64.108808ms', u'executionTime': u'63.940999ms', u'resultSize': 0, u'resultCount': 0, u'errorCount': 1}, u'errors': [{u'msg': u'No primary index on keyspace default. Use CREATE PRIMARY INDEX to create one.', u'code': 4000}], u'requestID': u'14a2ba49-512b-4a4b-9e8d-37ef6c010c34'}, http_status=404>>

我当前执行get请求/查询操作的python代码段是

 def get(self):
        tableName = request.args.get("tablename")

        createPrimaryIndex = N1QLQuery("create primary index on `default`")
        cb.n1ql_query(createPrimaryIndex)

        q = N1QLQuery("select * from `default` where tablename='{0}' limit 10;".format(tablename))
        for row in cb.n1ql_query(q):
            print row

我观察到如果我进入couchbase控制台并执行查询set primary index on default(而不是在我的服务器代码中执行),然后执行我的服务器代码,数据将被正常返回。但是,我希望在我的服务器代码中执行此查询。这是可能的,如果可以的话,我应该怎么做呢?

1 个答案:

答案 0 :(得分:0)

您可以onPressonRowPress设置为n1ql_index_create(默认设置),或将其设置为defer并使用False / {的组合{1}}检测索引创建的时刻。

https://github.com/couchbase/couchbase-python-client/blob/2.2.5/couchbase/bucketmanager.py#L355