首页 > 解决方案 > PynamoDB query() 返回 0 值,而 scan() 确实

问题描述

我已经声明了一个非常基本的模型并测试了查询和其他功能。我可以运行scan()并从 dynamoDB 中获取所有对象,但是当我运行时,query我什么也得不到。我查看了示例、文档并在互联网上进行了搜索。无法弄清楚我做错了什么。

这是我的模型:

class Book(BaseModel):
    id = UnicodeAttribute(hash_key=True, null=False, default_for_new=uuid.uuid4())
    name = UnicodeAttribute(null=False)
    author = UnicodeAttribute(null=True)
    pages = NumberAttribute(null=True)

    class Meta:
        table_name = BOOKS_TABLE_NAME

这是我作为示例编写的代码:

# List all books - Passes
print('Fetching all books')
books = Book.scan()
for b in books:
    print(b.id)
    print(b.name)
    # Fetch single book - Failed
    print('Fetching single book')
    book = list(Book.query(b.id))
    print(book)

如果我boto3用来获取该项目,我可以获取它。

book = dynamodb_client.get_item(
    TableName=BOOKS_TABLE_NAME,
    Key={
        'id': {
            'S': id
        },
    }
)
print(book)

我不知道为什么通过访问boto3是有效的,但不是通过 pynamoDB。任何指导将不胜感激。

标签: pythondynamodb-queriespynamodb

解决方案


推荐阅读