Я пытаюсь добавить элемент в существующую таблицу в DynamoDB, однако я получаю сообщение об ошибке
, пропуская ключевую влажность в элементе
при запуске программы.Необработанные данные JSON: здесь Ниже приведен мой код для создания элемента .
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 abs(o) % 1 > 0:
return float(o)
else:
return int(o)
return super(DecimalEncoder, self).default(o)
dynamodb = boto3.resource('dynamodb', region_name='us-east-1', endpoint_url="https://dynamodb.us-east-1.amazonaws.com")
table = dynamodb.Table('Machines')
machinekey = 1
city = "Miami"
state = "Florida"
response = table.put_item(
Item={
'machinekey': machinekey,
'city': city,
'state': state,
'machinevals': {
'machineid': 1,
'date': "01/03/2019",
'humidity': 25,
'pressure': 105
}
}
)
print("PutItem succeeded:")
print(json.dumps(response, indent=4, cls=DecimalEncoder))
Ниже приведен мой код для создания таблицы.
from __future__ import print_function # Python 2/3 compatibility
import boto3
dynamodb = boto3.resource('dynamodb', region_name='us-east-1', endpoint_url="https://dynamodb.us-east-1.amazonaws.com")
table = dynamodb.create_table(
TableName='Machines',
KeySchema=[
{
'AttributeName': 'humidity',
'KeyType': 'HASH' #Sort key, not partition (HASH)
},
{
'AttributeName': 'pressure',
'KeyType': 'RANGE' #Sort key
}
],
AttributeDefinitions=[
{
'AttributeName': 'humidity',
'AttributeType': 'N'
},
{
'AttributeName': 'pressure',
'AttributeType': 'N'
},
]
ProvisionedThroughput={
'ReadCapacityUnits': 10,
'WriteCapacityUnits': 10
}
)
print("Table status:", table.table_status)
Я следовал шагу 1, предоставленному на веб-сайте AWS , создав аналогичную структуру JSON и заменив переменные в их примере.