簡體   English   中英

Boto3:將數據插入dynamodb表

[英]Boto3: insert data into dynamodb table

我有一個名為events的 DynamoDB 表,我想put數據放入表中。

我的dynamodb表結構如下

{
 "partition_key": "user_id1111",
 "sort_key": "version_1",
 "attributes": {
  "events": [
   {
    "t": "1614712316",  
    "a": "product_view",   
    "i": "1275"
   },
   ...
   ...
   ...
  ]
 }
}

我有2個數據條目:

entry1 = {
     "t": 1607208938861,
     "a": "product_add",
     "i": "142320"
}
entry2 = 
    {
      "M": {
       "t": {
        "N": "1607208938862"
       },
       "a": {
        "S": "product_purchase"
       },
       "i": {
        "S": "142318"
       }
      }
     }

我想在 dynamodb 表中插入兩個條目。

我知道我們可以使用BOTO3-Dynamodb-resourceentry1插入表中

我知道我們可以使用BOTO3-Dynamodb-cliententry2插入表中

筆記:

entry1 ==> 數據將始終采用類似於dynamodb resource的格式

entry2 ==> 數據將始終采用類似於dynamodb client的格式

目標:

使用單個boto3-resource方法( put-item ),我想將這兩條記錄插入到 dynamodb 表中。

我在 DYNAMODB 表中的最終 OUTPUT 將類似於下面

{
 "partition_key": "user_id1111",
 "sort_key": "version_1",
 "attributes": {
  "events": [
     {
     "t": 1607208938861,
     "a": "product_add",
     "i": "142320"
     },
     {
     "t": 1607208938862,
     "a": "product_purchase",
     "i": "142318"
     },

   
  ]
 }
}

任何人都可以為此提出解決方案嗎?

基本上我找到了一個名為dynamodb-json的 python 庫: https://pypi.org/project/dynamodb-json/

這個庫幫助我們將dynamodb-json格式轉換為python representation 然后,我們可以直接使用 boto3-dynamodb-resource 將 python 表示的條目放入 dynamodb。

import boto3
import json
from dynamodb_json import json_util as dbjson


dynamodb = boto3.resource('dynamodb')
dbtable = dynamodb.Table('events')


entry1 = json.dumps({
     "t": 1607208938861,
     "a": "product_add",
     "i": "142320"
})

entry2 = 
    {
      "M": {
       "t": {
        "N": "1607208938862"
       },
       "a": {
        "S": "product_purchase"
       },
       "i": {
        "S": "142318"
       }
      }
     }


# convert entry2 into python representation
obj = json.dumps(dbjson.loads(entry2))

in_list = []
in_list.append(json.loads(entry1))
in_list.append(json.loads(obj))

response = dbtable.put_item(
           Item={
              "cache_key": "user_id1111",
              "sort_key": "version_1",
              "attributes": {"events":in_list},
     }
        )

上面的代碼解決了我的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM