首先发布在Stack上,对于使用Python进行编程和使用DynamoDB相当新颖,但我只是试图在基于两个预定义属性返回结果的表上运行扫描。使用FilterExpression进行Dynamodb扫描()使用FilterExpression进行Dynamodb扫描()
---这里是我的Python代码片段---
shift = "3rd"
date = "2017-06-21"
if shift != "":
response = table.scan(
FilterExpression=Attr("Date").eq(date) and Attr("Shift").eq(shift)
)
我DynamoDB有4个领域。
1)ID
2)日期
3)移位
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"
}
]
返回的项目:2
我相信,通过与指定的扫描操作是逻辑“与”应用FilterExpression寻找符合BOTH标准的条目,因为我使用'和'。
难道这是因为在两个条目中都找到了'shift'属性“3rd”吗?我如何确保它根据满足的BOTH标准返回条目,而不仅仅是给我一个属性类型的结果?
我有一种感觉,这很简单,但我看过可用的文档:http://boto3.readthedocs.io/en/latest/reference/services/dynamodb.html#DynamoDB.Table.scan,我仍然有麻烦。任何帮助将不胜感激!
P.S.我试图让帖子简单易懂(不包括我所有的程序代码),但是,如果需要其他信息,我可以提供!
谢谢你的解释!我现在明白了! – Torbyn