首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Python中没有数据类型的AWS DynamoDB execute_statement

在Python中没有数据类型的AWS DynamoDB execute_statement
EN

Stack Overflow用户
提问于 2022-07-28 19:56:29
回答 1查看 215关注 0票数 0

我使用boto3来使用PartiQL查询我的DynamoDB表,

代码语言:javascript
复制
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')

现在,您得到的响应包含了如下所示的字典列表,

代码语言:javascript
复制
{'some_data': {'S': 'XXX'},
  'sort_key': {'N': '1'},
  'partition_key': {'N': '7'}
}

除了属性名(例如partition_key)之外,您还可以得到值的数据类型(例如,'N')和实际值(例如'7')。还可以看到,值实际上也不是以指定的数据类型出现的(例如,partition_key应该是一个数字(N),但该值是一个字符串。

有没有什么方法可以让我在字典列表中获得结果,而不需要类型和应用的类型?

这意味着类似的事情,

代码语言:javascript
复制
{'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查询我的表。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-28 20:16:35

如果您可以使用.resource而不是.client,那么您将生活在一个更高的抽象层。

https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/dynamodb.html#service-resource

代码语言:javascript
复制
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('name')

您希望使用PartiQL,它返回较低级别的数据格式,因此您可能必须遵循How to convert a boto3 Dynamo DB item to a regular dictionary in Python?的建议。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73158528

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档