для l oop принимает только последнее значение в python aws Dynamodb - PullRequest
0 голосов
/ 29 мая 2020

Я пытаюсь вставить записи в таблицу, но в таблицу вставляется только последняя запись (данные результата) из l oop

Вот код, который я пробовал:

CDates = ['2020-05-10','2020-05-12','2020-05-13','2020-05-16','2020-05-20']

ResultData = {}
for date in CDates:
   filterDate = Key('Date').eq(id)
   appResponse = appTable.scan(FilterExpression = filterDate)
   accResp = table.query(KeyConditionExpression = Key('PrimaryId').eq('Key'),FilterExpression = Key('Date').eq(date))
   if len(accResp['Items']) == 0:
       ResultData['PrimaryId'] = 'Key'
       ResultData['CreatedDate'] = date
       ResultData['Type'] = 'Appt'
       ResultData['Id'] = str(uuid.uuid4())
       print(ResultData)
       table.put_item(Item=ResultData)   

Не понимаю, где я go ошибся

1 Ответ

0 голосов
/ 29 мая 2020

Вы назначили ResultData за пределами l oop и изменили значения для тех же ключей каждый раз, когда l oop запускался. Попробуйте это:

CDates = ['2020-05-10', '2020-05-12', '2020-05-13', '2020-05-16', '2020-05-20']

for date in CDates:
    filterDate = Key('Date').eq(id)
    appResponse = appTable.scan(FilterExpression=filterDate)
    accResp = table.query(
        KeyConditionExpression=Key('PrimaryId').eq('Key'),
        FilterExpression=Key('Date').eq(date))
    if len(accResp['Items']) == 0:
        ResultData = {
            'PrimaryId': 'Key',
            'CreationDate': date,
            'Type': 'Appt',
            'Id': str(uuid.uuid4())
        }
        print(ResultData)
        table.put_item(Item=ResultData)

...