我已经声明了一个非常基本的模型并测试了查询和其他功能。我可以运行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。任何指导将不胜感激。