У меня возникли проблемы с доступом к значениям ключей json объектов в динамической базе данных. Например, предположим, у меня есть следующий код:
pf = boto3.resource('dynamodb', region_name='us-west-2', ..).Table("portfolios")
from boto3.dynamodb.conditions import Key, Attr
pf.query(KeyConditionExpression=Key('user').eq('user1'),
FilterExpression=Attr('payload.name'))
Я получаю ошибку с кодом выше:
{'Items': [],
'Count': 0,
'ScannedCount': 2,
'ResponseMetadata': {'RequestId': 'LLR4058OVT9OVOAH2323PD43BRVV4KQNSO5AEMVJF66Q9ASUAAJG',
'HTTPStatusCode': 200,
'HTTPHeaders': {'server': 'Server',
'date': 'Tue, 25 Feb 2020 22:06:23 GMT',
'content-type': 'application/x-amz-json-1.0',
'content-length': '39',
'connection': 'keep-alive',
'x-amzn-requestid': 'LLR4058OVT9OVOAH2323PD43BRVV4KQNSO5AEMVJF66Q9ASUAAJG',
'x-amz-crc32': '4181910954'},
'RetryAttempts': 0}}
Ниже приведена схема моей таблицы:
user id payload
123 120f3a28-c89a-4b20-89bd-dea385c4a15a {}
user1 008bc37d-4b24-4731-9a4d-36756ba4f06d {"created": {"S:..
user1 a30cee2d-5624-4896-b6d5-a5623b341cc1 {"Created": {"S:...
user2 z30ckk2d-2123-7654-9a94-a55b3211cc23 {"Created": {"S:...
Ниже приведена типичная полезная нагрузка в столбце полезной нагрузки
{'payload': {'record_count': Decimal('2'),
'size_type': 'percent',
'records': [{'name': 'SSGA SPDR S&P 500 - SSgA Active Trust',
'ticker': 'SPY US',
'id': '80d99cb7-354f-4d30-ac13-17ba4ec02733',
'locale': 'US',
'size': Decimal('80'),
'secid': Decimal('549535')},
{'name': 'BTC iShares Core U.S. Aggregate Bond ETF - BlackRock Institutional Trust Company N.A.',
'ticker': 'AGG US',
'id': '807bfb0f-757d-4913-b87f-df54dae4154b',
'locale': 'US',
'size': Decimal('20'),
'secid': Decimal('551115')}],
'created': '2020-02-25T18:16:06.584162',
'name': 'Logicly Aggressive Benchmark',
'currency': 'usd',
'id': '008bc37d-4b24-4731-9a4d-36756ba4f06d',
'updated': '2020-02-25T18:16:06.584164'},
'id': '008bc37d-4b24-4731-9a4d-36756ba4f06d',
'user': 'user1'}
Как видите, полезная нагрузка имеет ключ с именем «полезная нагрузка», который имеет «имя». т. е. «логически агрессивный эталонный тест»
Как запросить все портфели ios в user1 и получить атрибут имени каждой полезной нагрузки? Спасибо