0

我有一个现有的 DynamoDB 表,我想编写一些 Python 代码来将一个属性(列表类型)附加到表中。这是我尝试过的:

users.put_item(

    Item={

        "new_attribute": []

    }

)

但这没有用。我在网上到处找,但找不到任何东西,我知道我一定错过了一些基本的东西。任何帮助将不胜感激。

4

2 回答 2

1

这是一个有效的完整示例

    ### 模拟列表的插入和更新

    #创建表
    导入 boto3
    dynamodb = boto3.resource('dynamodb')
    尝试:
        表 = dynamodb.create_table(
                TableName='Test_list',
                KeySchema=[
                    {
                        '属性名':'_id',
                        'KeyType': 'HASH' # 分区键
                    }
                ],
                属性定义=[
                    {
                        '属性名':'_id',
                        '属性类型':'N'
                    }
                ],
                预置吞吐量={
                    'ReadCapacityUnits':5,
                    'WriteCapacityUnits':5
                }
            )

    除了 ClientError 作为 e:
        如果 e.response['Error']['Code']:
            打印(e.response['错误']['消息'])
        打印(e.response)

    ## 用列表添加记录
    table=dynamodb.Table('Test_list')
    ll=['一个','两个']
    resp=table.put_item(
    项目={
        '_id': 1,
        “我的名单”:我
    }
    )

    #更新列表
    new_ll=['三','四']
    响应 = table.update_item(
        键={
            '_id': 1
        },
        UpdateExpression="SET #l = list_append(#l, :vals)",
        表达式属性名称={
            "#l": '我的列表'
        },
        表达式属性值={
            ":vals": new_ll
        }
    )

    # 获取记录进行验证
    resp=table.get_item(Key={'_id':1})
    响应 ['项目']


您将看到输出:

{'_id': Decimal('1'), 'mylist': ['one', 'two', 'three', 'four']}
于 2020-08-26T18:10:13.477 回答
0
import boto3

dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('<your-ddb-table-name>')

table.update_item(
    Key={
        'PK': '<pk>',
        'SK': '<sk>'
    },
    UpdateExpression='SET new_attribute = :list',
    ExpressionAttributeValues={
        ':list': []
    }
)
于 2020-08-22T00:53:30.543 回答