使用python在aws dynamodb上写一个dict作为avS

时间:2018-01-09 09:14:54

标签: python amazon-web-services amazon-dynamodb boto3

我想在dynamo DB上存储字典,所以:

{"amount":"2.9","date":[]}

我知道如何使用Haskell。

来自formattedInfo = avS .~ info $ attributeValue

Network.AWS.DynamoDB

但是当我用python尝试它时:

formatted_data = {'amount': str(data['amount']), 'date': data['date']}

if 'Item' in item_response:
    table.update_item(
        Key={
            's3ObjectKey': s3_key
        },
        UpdateExpression='SET kiData = :val1',
        ExpressionAttributeValues={
            ':val1': formatted_data
        }
    )
else:
    table.put_item(
        Item={
            's3ObjectKey': s3_key,
            'kiData': formatted_data
        }
    )

我得到了这个{ "amount" : { "S" : "2.9" }, "date" : { "L" : [ ] }}

并没有那么糟糕,但它并不像{"amount":"2.9","data":[]}

那样舒适

有谁知道,我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

我已经找到了答案,我只需将其存储为字符串:

formatted_data = {'amount': str(data['amount']), 'date': data['date']}

if 'Item' in item_response:
    table.update_item(
        Key={
            's3ObjectKey': s3_key
        },
        UpdateExpression='SET kiData = :val1',
        ExpressionAttributeValues={
            ':val1': str(formatted_data)
        }
    )
else:
    table.put_item(
        Item={
            's3ObjectKey': s3_key,
            'kiData': str(formatted_data)
        }
    )

或者也是这样,对我来说更合适:

formatted_data = {'amount': str(data['amount']), 'date': data['date']}

if 'Item' in item_response:
    table.update_item(
        Key={
            's3ObjectKey': s3_key
        },
        UpdateExpression='SET kiData = :val1',
        ExpressionAttributeValues={
            ':val1': json.dumps(formatted_data)
        }
    )
else:
    table.put_item(
        Item={
            's3ObjectKey': s3_key,
            'kiData': json.dumps(formatted_data)
        }
    )