Не могу получить атрибут query_entities Table_Service - PullRequest
0 голосов
/ 21 мая 2019

Мой запрос должен возвращать более 1000 строк. Но query_entities возвращают только 1000 строк для одного запроса. Итак, я хочу использовать токен, перезапущенный, когда результат запроса превышает 1000 строк, чтобы получить все строки, которые должны быть возвращены запросом. Но я не могу получить атрибут продолжения x-ms.

#coding:utf-8
class Use_Azure_Data:

    def __init__(self, account_name, sas_token):
        self._account_name = account_name
        self._sas_token = sas_token

    #Auth
    def _set_table_service(self):
        table_service = TableService(account_name=self._account_name, sas_token=self._sas_token)
        return(table_service)


    def Retrives_datas(self, days_before):

        before_now = datetime.datetime.now() - datetime.timedelta(days=days_before)
        now = before_now.isoformat()
        filter = "Timestamp gt datetime'" + now + "'"
        Query = self.Table_Service.query_entities('MyTable', filter = filter, timeout=None)

        if hasattr(Query, 'x-ms-continuation'):
            print("x-ms-continuation attribut for Query EXIST.")
        else:
            print("x-ms-continuation attribut for Query NOT EXIST.


    Table_Service = property(_set_table_service)


Data = Use_Azure_Data('MyAccount', 'MySASkey' )
Data.Retrives_datas(7)

Атрибут x-ms-продолжение для Query EXIST.

Я хочу получить x-ms-продолжение, чтобы использовать его для получения всех строк, по моему запросу

1 Ответ

0 голосов
/ 22 мая 2019

Если вы используете последнюю версию пакета azure-cosmosdb-table , вам следует использовать marker вместо x-ms-continuation.

Пример кода, как показано ниже:

table_service = TableService(account_name, account_key)
i=0
marker = None
while True:
    tasks = table_service.query_entities(table_name, data_filter,
                                         marker = marker,
                                         num_results=1000)
    for task in tasks:
      i += 1
      print(task)
    if tasks.next_marker is not None and len(tasks.next_marker) > 0:
      marker = tasks.next_marker
    else:
        break


print i

Вы можете просмотреть определение query_entities на GitHub :

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...