SAE KVDB Python前缀查找marker参数注意事项

SAE KVDB Python API中提供的前缀查找函数包括get_by_prefix(前缀查找键值对)与getkeys_by_prefix(前缀查找Keys)

方法参数列表说明如下:

get_by_prefix(prefix, limit=100, marker=None)
从KVDB中查找指定前缀的 key/value pair。返回一个generator,yield的item为一个(key, value)的tuple。

参数:
prefix – 需要查找的key的前缀。
limit – 最多返回的item个数,默认为100。
marker – 指定从哪一个key开始继续查找,只返回该key后面的结果(该key不含在内)。

getkeys_by_prefix(prefix, limit=100, marker=None)
从KVDB中查找指定前缀的key。返回符合条件的key的generator。

参数:
prefix – 需要查找的key的前缀。
limit – 最多返回的key的个数,默认为100。
marker – 指定从哪一个key开始继续查找,只返回该key后面的结果(该key不含在内)。

但需要注意的是,limit参数和marker参数传入时必须带上limit=和marker=,不可以直接传值,请看下面这段代码:


from django.contrib import auth
from django.http import HttpResponse
from django.template import RequestContext
from django.contrib.auth.decorators import login_required
from django.shortcuts import get_object_or_404, render_to_response,redirect
import sae.kvdb

def index(request):
kv = sae.kvdb.KVClient()
kv_info = kv.get_info()
path = request.path
prefix = request.GET.get('prefix','')
limit = request.GET.get('limit',20)
prev_marker = request.GET.get('prev_marker','')
marker = str(request.GET.get('marker',''))
results = list(kv.get_by_prefix(str(prefix),int(limit),marker))
if results and len(results):
marker = results[-1][0]
return render_to_response('kvpanel/index.html', {'kv_info':kv_info,'results':results,'prefix':prefix,'pre_marker':prev_marker,'marker':marker,'path':path,'limit':limit}, context_instance=RequestContext(request))

代码行:

results = list(kv.get_by_prefix(str(prefix),int(limit),marker))

正确的调用方法应该为:

results = list(kv.get_by_prefix(str(prefix),limit=int(limit),marker=marker))

否则参数limit和marker无效。

本文链接:http://bookshadow.com/weblog/2014/06/01/sae-kvdb-python-marker/
请尊重作者的劳动成果,转载请注明出处!书影博客保留对文章的所有权利。

如果您喜欢这篇博文,欢迎您捐赠书影博客: ,查看支付宝二维码