Проблема с токеном продолжения при запросе из БД Космос - PullRequest
1 голос
/ 29 апреля 2019

Я сталкиваюсь с проблемой продолжения при запросе элементов из CosmosDB.

Я уже пробовал следующее решение , но безуспешно.Я могу запросить только первые 10 результатов на странице, хотя я получаю токен, который не NULL.

Токен имеет размер 10733 bytes и выглядит следующим образом.

{"token":"+RID:gtQwAJ9KbavOAAAAAAAAAA==#RT:1#TRC:10#FPP:AggAAAAAAAAAAGoAAAAAKAAAAAAAAAAAAADCBc6AEoAGgAqADoASgAaACoAOgBKABoAKgA6AE4AHgAuAD4ASgAeACoAPgBOAB4ALgA+AE4AHgAqAD4ASgAeAC4APgBOAB4ALgA+AE4AIgA2AEYAFgAmADYARgAaACYAPgBKABYAKgA6AE4AHgAuAD4ATgAeAC4APgBOAB4ALgA+AE4AIgAuAD4ATgAeAC4APgBOACIAMgA+AFIAIgAyAD4AUgAmADIAQgAWACIALgBCABIAIgAyAEIAEgAiADIAQgAOACYANgBKAB4AJgA6AEYAGgAqADoATgAeAC4APgB....etc...etc","range":{"min":"","max":"05C1BF3FB3CFC0"}}

Код выглядит следующим образом.Функция QueryDocuments не работает.Вместо этого мне пришлось использовать QueryItems.

options = {} 
options['enableCrossPartitionQuery'] = True
options['maxItemCount'] = 10

 q = client.QueryItems(collection_link, query, options)
    results_1 = q._fetch_function(options)
    #this is a string representing a JSON object
    token = results_1[1]['x-ms-continuation']

    data = list(q._fetch_function({'maxItemCount':10,'enableCrossPartitionQuery':True, 'continuation':token}))

Есть ли решение для этого?Спасибо за вашу помощь.

1 Ответ

2 голосов
/ 29 апреля 2019

Пожалуйста, используйте пакет pydocumentdb и обратитесь к образцу кода ниже.

from pydocumentdb import document_client

endpoint = "https://***.documents.azure.com:443/";
primaryKey = "***";

client = document_client.DocumentClient(endpoint, {'masterKey': primaryKey})

collection_link = "dbs/db/colls/coll"

query = "select c.id from c"

query_with_optional_parameters = [];

q = client.QueryDocuments(collection_link, query, {'maxItemCount': 2})
results_1 = q._fetch_function({'maxItemCount': 2})

print(results_1)
token = results_1[1]['x-ms-continuation']
results_2 = q._fetch_function({'maxItemCount': 2, 'continuation': token})

print(results_2)

Выход:

enter image description here

...