我是AWS Dynamodb的新手。我正在使用python的boto3从dynamodb表中获取特定属性的所有项(例如,属性名称为'Name')。
虽然表格中还有其他属性,如“电子邮件”,“职业”。我需要获取或获取属性“名称”的所有项目。 “我的名称”属性包含四个项目: 尼克,约翰,加里,朱尔斯。 如何使用boto3获取此内容?我尝试使用boto3的client.query方法,但我不确定它是否有效。
答案 0 :(得分:2)
让我们假设User
是您仅想从其中获取NAME
属性的表名。首先扫描表并对其进行遍历,并获得NAME
属性并存储在列表中。在这里,我将NAME
属性的值存储在名为nameList
import boto3
import json
def getNames():
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('User')
response = table.scan()
nameList = []
for i in response['Items']:
nameList.append(i['NAME'])
return nameList
答案 1 :(得分:1)
要获取属性为“名称”的所有项目,请使用以下代码:
from __future__ import print_function # Python 2/3 compatibility
import boto3
import json
import decimal
# 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)
# us-east-1 is the region name here
dynamodb = boto3.resource('dynamodb', 'us-east-1')
# Test is the table name here
table = dynamodb.Table('Test')
# Table scan
response = table.scan()
for i in response['Items']:
# get all the table entries in json format
json_str = json.dumps(i, cls=DecimalEncoder)
#using json.loads will turn your data into a python dictionary
resp_dict = json.loads(json_str)
# Getting particular column entries
# will return None if 'Name' doesn't exist
print (resp_dict.get('Name'))
答案 2 :(得分:1)
不确定是否迟到了,但是您可以使用“ ProjectionExpression”之类的方法从Dynamodb中获取name属性: 例如,在您的情况下,您应该使用
tableparam = { 'ProjectionExpression':"Name" }
reponse = tablename.scan(**tableparams)
对我有用。让我知道它是否对您有帮助。
答案 3 :(得分:0)
使用“扫描”功能时可以使用AttributesToGet。
$('#oki123').on('click', () => getHref...;