Azure存储表返回空实体

时间:2017-06-05 13:27:05

标签: python azure azure-table-storage

我有以下Python代码:

def GetData(tableService, tableName, dataFilter):
    keyMarkers = {}
    keyMarkers['nextpartitionkey'] = 0
    keyMarkers['nextrowkey'] = 0
    b=[]
    while True:
        #get a batch of data
        a = tableService.query_entities(table_name=tableName, filter=dataFilter,num_results=1000 ,marker=keyMarkers)
        #copy results to list
        for item in a.items:
            b.append(item.amount.value)
        #check to see if more data is available
        if len(a.next_marker) == 0:
            del a
            break
        #if more data available setup current position
        keyMarkers['nextpartitionkey'] = a.next_marker['nextpartitionkey']
        keyMarkers['nextrowkey'] = a.next_marker['nextrowkey']
        #house keep temp storage
        del a
    #return final list
    return b

但是,对于第一个结果,a.items是空的。在10次查询之后,它最终开始返回一些数据。就像表中没有我查询的值的行一样。我知道它有,并且它最终来了。但只有在返回太多空结果后才会这样做。

我有一个PHP代码用于相同的目的,但它不会得到空实体。所以我不认为这是Azure的常见行为。也许它的SDK for Python工作方式?

1 个答案:

答案 0 :(得分:1)

在第一个请求中,您是否可以尝试为标记传入'None',而不是为nextpk / nextrk传递0和0的字典?我不确定,但这可能会使服务混淆为使用此pk&搜索表实体。 RK。