DynamoDB不返回扫描值

时间:2019-11-26 14:08:20

标签: python amazon-web-services amazon-dynamodb boto3 dynamodb-queries

我正在尝试使用 scan 查询我的DynamoDB。但是,每次扫描时,都会出现以下错误:

  

“无法封送响应:Binary(b` long_string_of_random_alphanumerics )不能序列化JSON”

代码:

def login(username, password):
    dynamodb = boto3.resource('dynamodb')
    table = dynamodb.Table('users')
    response = table.scan(
        FilterExpression=Key('username').eq(username)
    )
    items = response["Items"]
    return items

此外,当我对“用户名” bytes(username,"utf-8")进行编码时,代码不会给我错误。但是,它返回的列表为空。

Response:
[]

我运行了一个查询来检查它是否通过主键获取了任何项目,并且返回1,所以我不确定在这里我在做什么错。

    dynamodb = boto3.resource('dynamodb')
    table = dynamodb.Table('users')
    response = table.query(
        KeyConditionExpression=Key('username').eq(username)
    )    
    if response["Count"] == 0:
        return False
    else:
        return True

1 个答案:

答案 0 :(得分:0)

我今天也遇到了同样的问题,并且找到了解决方法:

 response = table.scan(
             FilterExpression = Attr("SS_username").eq(username) & Attr("SS_password").eq(password)
         ) 

    if response["Count"] == 0:
        return False
    else:
        return True

或其他人可以分享的其他方法?