Dynamodb get_item和put_item在python中没有数据类型

时间:2017-07-31 17:26:00

标签: python amazon-dynamodb

我目前有一个类似于:

的python脚本
import boto3
...
response = dynamodb.get_item(
  TableName = dynamodb_table_name,
  Key = {
    "snippet_id": {
      "S": snippet_id
    }
  }
)
if "Item" in response:
    item = response["Item"]
    print(json.dumps(item, indent=4, cls=DecimalEncoder))

这打印类似于:

{
    "var_1": {
        "BOOL": false
    }, 
    "var_2": {
        "S": "Text"
    }, 
    "snippet_id": {
        "S": "3a97e45c-ffed-4c76-8bb4-b2a32f49a5d2"
    }
}

知道如何进行类型检测并返回:

{
    "var_1": False, 
    "var_2": "Text",
    "snippet_id": "3a97e45c-ffed-4c76-8bb4-b2a32f49a5d2"
}

此外,这也可以用于查询吗?

1 个答案:

答案 0 :(得分:2)

TLDR

使用“资源”代替“客户端”。

摘要

从本质上讲,您可以致电boto3.client()boto3.resource()

客户端返回 dynamoDB语法。看起来像这样:

'var_1' : {'S':"string"}

资源返回常规语法。看起来像这样:

'var_1' : "string"

更多详细信息

从根本上讲,Boto3所做的只是代表您调用AWS API。对于大多数AWS服务,Boto3提供了两种不同的方法来访问这些抽象的API:

客户端:低级服务访问

资源:更高级别的面向对象的服务访问

参考:https://realpython.com/lessons/clients-and-resources/