亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 DynamoDB 中插入多行 json

在 DynamoDB 中插入多行 json

智慧大石 2022-08-25 16:32:57
我有以下 json 文件{"columnwithoutname":"structureet","nofinesset":810001792,"nofinessej":810001784}{"columnwithoutname":"structureet","nofinesset":670797117,"nofinessej":670010339}我想使用 Lambda 將其插入 DynamoDB 中。這就是我所做的:def lambda_handler(event, context):    bucket=event['b']    file_key=event['c']    table=event['t']    recList=[]    s3 = boto3.client('s3')    dynamodb = boto3.client('dynamodb')    obj= s3.get_object(Bucket=bucket, Key=file_key)    recList=obj['Body'].read().split('\n')    for row in recList:        response = dynamodb.put_item(TableName='test-abe', Item=row)但是我有這個錯誤: "errorMessage": "Parameter validation failed:\nInvalid type for parameter Item顯然,我還需要精確地確定每列的類型,以便可以接受它。無論如何,自動完成?我希望所有列都是字符串。謝謝
查看完整描述

2 回答

?
明月笑刀無情

TA貢獻1828條經驗 獲得超4個贊

DynamoDB 客戶端希望參數為 (每 https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/dynamodb.html#DynamoDB.Client.put_itemItemdict)


當你做你得到的是一個列表,所以傳遞給一個參數期望顯然會失敗。recList = obj['Body'].read().split('\n')strstrdict


需要考慮的另一件事是,DynamoDB 客戶端需要具有非常特定格式的項目,并具有顯式指定的屬性數據類型。如果您想讀取 JSON 并簡單地編寫它,我建議使用 DynamoDB 資源,如下所示:


dynamodb = boto3.resource('dynamodb')

table = dynamodb.Table(table_name)

table.put_item(item)

Table.put_item()接受簡單,無需為每個屬性指定數據類型,因此您只需從文件中讀取,將其轉換為dict并將其發送出去(https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/dynamodb.html#DynamoDB.Table.put_item)。dict


查看完整回答
反對 回復 2022-08-25
?
慕仙森

TA貢獻1827條經驗 獲得超8個贊

您需要操作每行才能具有“S”格式:

import json
for row in recList:
    row_dict = json.loads(row)
    ddb_row_dict = {k:{"S": v} for (k,v) in row_dict.items()}
    response = dynamodb.put_item(TableName='test-abe', Item=ddb_row_dict)


查看完整回答
反對 回復 2022-08-25
  • 2 回答
  • 0 關注
  • 99 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號