繁体   English   中英

DynamoDB 不返回扫描值

[英]DynamoDB not returning Scan values

我正在尝试使用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

此外,当我编码 "username" 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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM