gpt4 book ai didi

python - 从列表中更新大量 dynamodb 项目的最佳方法

转载 作者:太空宇宙 更新时间:2023-11-03 20:01:29 24 4
gpt4 key购买 nike

我有一个大约 500,000 个字符串的 python 列表,列表中的每个元素对应于我想要更新的 dynamodb 表中的项目的 id。

我的问题是,迭代此列表并对每个项目执行相同更新查询的最佳方法是什么?

我尝试过使用

data = pd.read_csv(filename)
pool = Pool(50)
results = pool.imap_unordered(job, data['item_id'].astype(str).tolist())

其中“job”是以下方法:

def job(item_id):
dynamodb = boto3.resource(
'dynamodb',
aws_access_key_id=aws_access_key_id,
aws_secret_access_key=aws_secret_access_key,
aws_session_token=aws_session_token,
region_name=region
)
table = dynamodb.Table('my-table')
response = table.update_item(
Key={
"id": item_id
},
UpdateExpression="set x=:new",
ExpressionAttributeValues={
':new': []
},
ReturnValues="UPDATED_NEW"
)

但是,虽然脚本执行时没有错误,但更改不会保留在 dynamodb 表中,我感觉好像我误解了如何在 boto3 资源上使用进程池以使此任务在 500,000 以上的效率上有所提高项目。

还值得注意的是,当我打印收到的响应时,我收到了 HTTP 200 响应。

最佳答案

引用DynamoDB文档here :

DynamoDB does not support empty sets.

所以你不能分配一个空的设置值(我很惊讶该操作没有返回错误......)。相反,您应该使用 UpdateItemremove 操作来删除整个 set 属性。

关于python - 从列表中更新大量 dynamodb 项目的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59203802/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com