首先发表在Stack上,这是使用Python和使用DynamoDB进行编程的新手,但是我只是试图对我的表进行扫描,以返回基于两个预定义属性的结果。
---这是我的Python代码段---
shift = "3rd"
date = "2017-06-21"
if shift != "":
response = table.scan(
FilterExpression=Attr("Date").eq(date) and Attr("Shift").eq(shift)
)
Run Code Online (Sandbox Code Playgroud)
我的DynamoDB有4个字段。

现在,针对该问题,在运行时,我将获得两个表条目,而我仅应获得第一个条目...根据我的扫描标准,该条目具有“无安全问题”。
---这是我的DynamoDB返回结果---
[
{
"Shift": "3rd",
"Safety": "No safety issues",
"Date": "2017-06-21",
"ID": "2"
},
{
"Shift": "3rd",
"Safety": "Cut Finger",
"Date": "2017-06-22",
"ID": "4"
}
]
Run Code Online (Sandbox Code Playgroud)
返回的项目:2
我相信,通过将FilterExpression与逻辑“和”一起应用,可以指定扫描操作正在查找满足两个条件的条目,因为我使用了“和”。
可能是因为在两个条目中都找到了“ shift”属性“ 3rd”吗?如何确保它根据两个条件都满足而返回条目,而不仅仅是给出一种属性类型的结果?
我觉得这很简单,但是我在以下位置查看了可用的文档:http : //boto3.readthedocs.io/en/latest/reference/services/dynamodb.html#DynamoDB.Table.scan,仍然遇到问题。任何帮助将不胜感激!
PS我试图使文章简单易懂(不包括我的所有程序代码),但是,如果需要其他信息,我可以提供!