не удалось получить содержимое строк для более чем 1000 строк в таблице Azure - PullRequest
1 голос
/ 23 мая 2019

Я пытаюсь поймать контент в строках больше 1000.

Итак, я попытался добавить каждый контент в список, чтобы иметь возможность использовать его.

кодирование: UTF-8

import os
import json
from azure import *
from azure.storage import *
from azure.storage.table import TableService, Entity
import datetime


def Retrives_datas():

    twenty_hours_before_now = datetime.datetime.now() - datetime.timedelta(days=1)
    now = twenty_hours_before_now.isoformat()
    filter = "Timestamp gt datetime'" + now + "'"
    maker = None
    i=0
    table_service = TableService(account_name='MyAccount', sas_token='MySAS')
    while True:
        tasks  = table_service.query_entities('MyTable', filter = filter, timeout=None, num_results=1000, marker=maker)
        for task in tasks:
            i += 1
            print(i,tasks.items[i]['Status'])
        if tasks.next_marker != {}:
            maker = tasks.next_marker
        else:
            break

я получаю ошибку ниже:

999 Успех

Traceback (последний вызов был последним): print (i, tasks.items [i] ['Status']) IndexError: индекс списка вне диапазона

зная, что я при замене

print(i,tasks.items[i]['Status'])

по

print(i)

Я получаю более 2770 строк.

1 Ответ

1 голос
/ 23 мая 2019

Распространенная ошибка list index out of range, потому что вы хотите получить доступ к списку [1000], даже если он содержит только 1000 элементов (вы устанавливаете num_results=1000). Вы можете получить доступ только к списку [999], потому что индекс начинается с 0.

Просто двигайтесь вниз по i += 1 линии.

for task in tasks:

    print(i,tasks.items[i]['Status'])
    i += 1

Мои образцы данных:

enter image description here

Выход:

enter image description here


Для краткости, длина tasks.item принимает размер следующего списка, который будет возвращен вместо приращения.

Решение: добавлено, если i == <num_results>: i = 0

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