python – 如何在给定主分区键值列表的情况下一次批量调用多个项目
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 如何在给定主分区键值列表的情况下一次批量调用多个项目,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1959字,纯文字阅读大概需要3分钟。
内容图文
![python – 如何在给定主分区键值列表的情况下一次批量调用多个项目](/upload/InfoBanner/zyjiaocheng/789/42945ee4c8af478188d8106b8e67646e.jpg)
所以,我有一个带有主分区键列的dynamodb表,foo_id并且没有主要的排序键.我有一个foo_id值列表,并希望得到与此id列表相关的观察结果.
我认为最好的方法(?)是使用batch_get_item(),但它不适合我.
# python code
import boto3
client = boto3.client('dynamodb')
# ppk_values = list of `foo_id` values (strings) (< 100 in this example)
x = client.batch_get_item(
RequestItems={
'my_table_name':
{'Keys': [{'foo_id': {'SS': [id for id in ppk_values]}}]}
})
我正在使用SS因为我传递了一个字符串列表(foo_id值列表),但我得到了:
ClientError: An error occurred (ValidationException) when calling the
BatchGetItem operation: The provided key element does not match the
schema
所以我认为这意味着它认为foo_id包含列表值而不是字符串值,这是错误的.
– >这种解释是对的吗?批量查询一堆主分区键值的最佳方法是什么?
解决方法:
密钥应如下所述给出.它不能被称为’SS’.
基本上,您可以将DynamoDB String数据类型与String(即不与SS)进行比较.每个项目都单独处理.它与查询中的SQL不相似.
'Keys': [
{
'foo_id': key1
},
{
'foo_id': key2
}
],
示例代码: –
您可能需要更改表名称和键值.
from __future__ import print_function # Python 2/3 compatibility
import boto3
import json
import decimal
from boto3.dynamodb.conditions import Key, Attr
from botocore.exceptions import ClientError
# Helper class to convert a DynamoDB item to JSON.
class DecimalEncoder(json.JSONEncoder):
def default(self, o):
if isinstance(o, decimal.Decimal):
if o % 1 > 0:
return float(o)
else:
return int(o)
return super(DecimalEncoder, self).default(o)
dynamodb = boto3.resource("dynamodb", region_name='us-west-2', endpoint_url="http://localhost:8000")
email1 = "abc@gmail.com"
email2 = "bcd@gmail.com"
try:
response = dynamodb.batch_get_item(
RequestItems={
'users': {
'Keys': [
{
'email': email1
},
{
'email': email2
},
],
'ConsistentRead': True
}
},
ReturnConsumedCapacity='TOTAL'
)
except ClientError as e:
print(e.response['Error']['Message'])
else:
item = response['Responses']
print("BatchGetItem succeeded:")
print(json.dumps(item, indent=4, cls=DecimalEncoder))
内容总结
以上是互联网集市为您收集整理的python – 如何在给定主分区键值列表的情况下一次批量调用多个项目全部内容,希望文章能够帮你解决python – 如何在给定主分区键值列表的情况下一次批量调用多个项目所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。