Keo*_*ros 22 python amazon-dynamodb boto3
当我试图从表中获取项目时,它会打印此错误
botocore.exceptions.ClientError:调用GetItem操作时发生错误(ValidationException):提供的键元素与架构不匹配
这是我的代码
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('testDynamodb')
response = table.get_item(Key={'userId': "user2873"})
item = response['Item']
print(item)
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?谢谢.
xtx*_*xtx 39
您的表模式同时定义了散列键和排序键.使用DynamoDB GetItem时,您必须提供它们,这里是文档的摘录
对于主键,您必须提供所有属性.例如,使用简单的主键,您只需要为分区键提供值.对于复合主键,必须为分区键和排序键提供值.
所以给出你的例子,这里是get_item参数的样子:
response = table.get_item(Key={'userId': "user2873", 'createdAt': "1489376547"})
Run Code Online (Sandbox Code Playgroud)
use*_*036 12
另一个有效的方法是以下代码:
from boto3.dynamodb.conditions import Key
result = table.query(
KeyConditionExpression=Key('userId').eq('user2873')
)
Run Code Online (Sandbox Code Playgroud)
小智 5
我也有同样的问题。解决这个问题的方法是:
创建表时,仅usrID在您的schema键中定义Hash。[我的意思是单个主键]
然后你可以根据你的 调用 get item usrID。如果您在表中将usrId和定义为和Key。[我的意思是复合主键] 您必须在调用 getItem 时提供两者。createdAtSchemaHashSort
| 归档时间: |
|
| 查看次数: |
34032 次 |
| 最近记录: |