首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法使GetItem与正常工作

无法使GetItem与正常工作
EN

Stack Overflow用户
提问于 2016-11-02 19:04:09
回答 2查看 487关注 0票数 2

我学习了教程,并使用Python设置了表,我可以用Python获得条目,但不能使用golang。我做错了什么?

我把我的桌子做成这样(几乎复制并粘贴在教程中):

代码语言:javascript
运行
复制
from __future__ import print_function # Python 2/3 compatibility
import boto3

dynamodb = boto3.resource('dynamodb', region_name='us-west-2')

table = dynamodb.create_table(
    TableName='Movies',
    KeySchema=[
        {
            'AttributeName': 'year',
            'KeyType': 'HASH'  #Partition key
        },
        {
            'AttributeName': 'title',
            'KeyType': 'RANGE'  #Sort key
        }
    ],
    AttributeDefinitions=[
        {
            'AttributeName': 'year',
            'AttributeType': 'N'
        },
        {
            'AttributeName': 'title',
            'AttributeType': 'S'
        },

    ],
    ProvisionedThroughput={
        'ReadCapacityUnits': 10,
        'WriteCapacityUnits': 10
    }
)

我像这样加载了数据(用Python):

代码语言:javascript
运行
复制
my_item = {"year": 1999, "title": "MyMovie", "info": {"Plot": "DynamoDB"}}
table.put_item(Item=my_item)

当我阅读数据时(用Python):

代码语言:javascript
运行
复制
response = table.get_item(Key={"year":1999,
                        "title":"MyMovie",
                    }
    )
print response

我的产出是:

代码语言:javascript
运行
复制
{u'Item': {u'info': {u'Plot': u'DynamoDB'}, u'year': Decimal('1999'), u'title': u'MyMovie'}, 'ResponseMetadata': {'RetryAttempts': 0, 'HTTPStatusCode': 200, 'RequestId': 'C8I2Q46K06T030INBCFN35RELVVV4KQNSO5AEMVJF66Q9ASUAAJG', 'HTTPHeaders': {'x-amzn-requestid': 'C8I2Q46K06T030INBCFN35RELVVV4KQNSO5AEMVJF66Q9ASUAAJG', 'content-length': '93', 'server': 'Server', 'connection': 'keep-alive', 'x-amz-crc32': '4025342458', 'date': 'Wed, 02 Nov 2016 18:20:14 GMT', 'content-type': 'application/x-amz-json-1.0'}}}

我的高丽密码:

代码语言:javascript
运行
复制
package main

import (
    "fmt"
    "github.com/goamz/goamz/aws"
    "github.com/goamz/goamz/dynamodb"
)


func main() {

    access_key := "MyAccessKey"
    secret_key := "MySecretKey"

    auth := aws.Auth{AccessKey: access_key, SecretKey: secret_key}

    server := &dynamodb.Server{Auth: auth, Region: aws.USWest2}

    desc_ptr, err := server.DescribeTable("Movies")

    if err != nil {
        fmt.Println(err)
    }

    primary_key, err := desc_ptr.BuildPrimaryKey()

    if err != nil {
        fmt.Println(err)
    }

    table := server.NewTable("Movies", primary_key)

    my_key := dynamodb.Key{HashKey: "1999", RangeKey: "MyMovie"}

    result, err := table.GetItem(&my_key)

    if err != nil {
        fmt.Println(err)
    }

    fmt.Println("Printing Result")

    for k, v := range(result) {
        fmt.Println(k, *v)
    }
}

在以下方面的成果:

代码语言:javascript
运行
复制
Printing Result
title {S title MyMovie [] }
year {N year 1999 [] }

除了我提供的titleyear之外,这还缺少了所有的东西。我遗漏了什么?

编辑:

我的go版本:

代码语言:javascript
运行
复制
go version go1.7.3 linux/amd64

我不知道我有什么goamz版本,但我很确定我是在掌握经验。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-11-04 09:59:07

我相信这可能是goamz库中的一个bug。函数parseAttribute具有解析不同数据类型的逻辑。然而,看起来它似乎不适用于数据类型地图、列表、BOOL等。

根据我的观察,字符串、数字和SS数据类型运行良好。如果您可以添加一个非键字符串属性并执行程序.您应该在结果中获得属性。

goamz项目go源代码以供参考

票数 1
EN

Stack Overflow用户

发布于 2017-07-10 03:06:09

我(行动)最终使用..。aws-sdk-go

它很好,我用的代码是:

代码语言:javascript
运行
复制
package main

import (
    "fmt"

    "github.com/aws/aws-sdk-go/aws"
    "github.com/aws/aws-sdk-go/aws/endpoints"
    "github.com/aws/aws-sdk-go/aws/session"
    "github.com/aws/aws-sdk-go/service/dynamodb"
)

func main() {

    sess := session.Must(session.NewSession(&aws.Config{
        Region: aws.String(endpoints.UsWest2RegionID),
    }))

    svc := dynamodb.New(sess)

    input := &dynamodb.GetItemInput{
        Key: map[string]*dynamodb.AttributeValue{
            "year": {
                N: aws.String("1999"),
            },
            "title": {
                S: aws.String("MyMovie"),
            },
        },
        TableName: aws.String("Movies"),
    }

    result, err := svc.GetItem(input)

    fmt.Println(result)
    fmt.Println(err)
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40387845

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档