2017-06-05 5 views
0

Ich habe folgenden Python-Code:Azure Storage Table Rückkehr leere Einheiten

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 

Es arbeitet jedoch für die ersten Ergebnisse, a.items leer kommt. Nach 10 Abfragen werden schließlich einige Daten zurückgegeben. Es ist, als hätte die Tabelle keine Zeilen für die Werte, die ich abgefragt habe. Ich weiß es, und es kommt schließlich. Aber nur nach zu vielen leeren Ergebnissen.

Ich habe einen PHP-Code für den gleichen Zweck, aber es erhält keine leeren Einheiten. Ich denke also nicht, dass dies ein gewöhnliches Verhalten von Azure ist. Vielleicht die Art, wie sein SDK für Python funktioniert?

+0

Erhalten Sie einige Werte in 'a.next_marker ['nextpartitionkey']' und 'a.next_marker ['nextrowkey']', auch wenn keine Datensätze zurückgegeben werden? –

+0

Ja, das tue ich. 'next_marker' wird immer zurückgegeben. – rlcabral

Antwort

1

Auf die allererste Anfrage, können Sie versuchen, "None" für den Marker, anstatt ein Wörterbuch mit 0 und 0 für nextpk/nextrk? Ich bin mir nicht sicher, aber das könnte den Service verwirren, um nach einer Tabellenentität mit diesem PK & rk zu suchen.

+0

Das ist absolut richtig! Ich habe gerade auf "None" gewechselt und es hat nicht nur das Problem behoben, sondern auch die Ergebnisse viel schneller zurückgegeben. – rlcabral

Verwandte Themen