【问题标题】:Get an AWS Table Resource using the low-level Client使用低级客户端获取 AWS 表资源
【发布时间】:2021-03-16 00:47:39
【问题描述】:

我的目标是获得我通过的类似对象:

dynamodb = boto3.resource(service_name='dynamodb')        
self._table = dynamodb.Table(name)

但通过Client 对象。 如何通过低级 Client 对象引用DynamoDB 表?

这是我的代码,

import boto3

cli = boto3.client('dynamodb')
cli.get_item(TableName=TABLE_NAME)

但我收到以下错误:

botocore.exceptions.ParamValidationError: Parameter validation failed:
Missing required parameter in input: "Key"

official documentation 我看到Key 是一个返回属性的字典,但我无法理解它实际代表的内容。

非常感谢任何帮助。

提前致谢。

【问题讨论】:

  • 您的 dynamoDB 中有主键吗?

标签: python-3.x boto3


【解决方案1】:

您应该使用定义项目的主键属性值以及与项目关联的属性。

boto_client.get_item(TableName='string', Key={})

通过client.get_item:

client = boto3.client('dynamodb')
client.get_item(TableName='YourTable', Key={'PrimaryKeyName': {'ValueType':'Value'}})

地点:

  • YourTable - 表名
  • KeyName - 主键
  • 值类型 - S、N、B、SS、NS、BS、 米
  • 价值 - 您想从表格中获取的项目的价值

请注意,如果您的值为 Number,则使用 N 但值无论如何都会在引号内

【讨论】:

  • “要检索的项目”是指表格吗?我的意思是我应该把我想检索的表的主键放在那里?我应该提供所有字段名称吗?谢谢。
  • @MichaelSidorov 不,您应该在获取或查询项目时仅提供主键=值。这就是为什么我们开始使用 table.scan()
  • @MichaelSidorov response = table.get_item(Key={'year': year, 'title': title}),顺便说一句,您可以使用以下方法创建表实例:dynamodb = boto3.resource('dynamodb'),然后 table = dynamodb.Table('YouTable') response = table。 get_item(Key={'year': year, 'title': title})
  • @MichaelSidorov 当您从表中选择 * 时,它不像相对数据库;有类似的命令 table.scan(),但它返回大约 1MB 的数据,然后你可以通过它在本地过滤
  • 我的目标是获得dynamodb.Table 对象的功能,但通过Client 对象,因为我需要Client 对象的线程稳定性。有没有办法实现它?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-14
  • 1970-01-01
  • 2022-11-05
  • 2021-01-10
  • 1970-01-01
  • 2019-03-16
相关资源
最近更新 更多