我使用boto3来使用PartiQL查询我的DynamoDB表,
dynamodb = boto3.client(
'dynamodb',
aws_access_key_id='<aws_access_key_id>',
aws_secret_access_key='<aws_secret_access_key>',
region_name='<region_name>'
)
resp = dynamodb.execute_statement(Statement='SELECT * FROM TryDaxTable')现在,您得到的响应包含了如下所示的字典列表,
{'some_data': {'S': 'XXX'},
'sort_key': {'N': '1'},
'partition_key': {'N': '7'}
}除了属性名(例如partition_key)之外,您还可以得到值的数据类型(例如,'N')和实际值(例如'7')。还可以看到,值实际上也不是以指定的数据类型出现的(例如,partition_key应该是一个数字(N),但该值是一个字符串。
有没有什么方法可以让我在字典列表中获得结果,而不需要类型和应用的类型?
这意味着类似的事情,
{'some_data': 'XXX',
'sort_key': 1,
'partition_key': 7
}注意,除了移除数据类型外,还将值转换为正确的类型。
这是一个简单的记录,但更复杂的记录可以有列表和嵌套字典。更多信息可在这里获得,https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/dynamodb.html#DynamoDB.Client.execute_statement
有什么方法可以以我想要的格式获取数据吗?
或者有人已经编写了一个函数来解析数据?
我知道已经有几个关于这方面的问题,但大多数问题都与其他语言的SDK有关。例如,
AWS DynamoDB data with and/or without types?
我没有在Python中找到解决这个问题的方法。
注意:我想继续使用PartiQL查询我的表。
发布于 2022-07-28 20:16:35
如果您可以使用.resource而不是.client,那么您将生活在一个更高的抽象层。
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('name')您希望使用PartiQL,它返回较低级别的数据格式,因此您可能必须遵循How to convert a boto3 Dynamo DB item to a regular dictionary in Python?的建议。
https://stackoverflow.com/questions/73158528
复制相似问题