【发布时间】:2017-11-26 00:44:27
【问题描述】:
第一次在 Stack 上发帖,对使用 Python 编程和使用 DynamoDB 还很陌生,但我只是想对我的表运行扫描,它会根据两个预定义的属性返回结果。
---这是我的 Python 代码 sn-p---
shift = "3rd"
date = "2017-06-21"
if shift != "":
response = table.scan(
FilterExpression=Attr("Date").eq(date) and Attr("Shift").eq(shift)
)
我的 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"
}
]
退回的物品:2
我相信,通过应用带有逻辑“and”的 FilterExpression 指定扫描操作正在寻找满足两个条件的条目,因为我使用了“and”。
这可能是因为在两个条目中都找到了“shift”属性“3rd”吗?如何确保它返回基于满足两个条件的条目,而不仅仅是给我一种属性类型的结果?
我觉得这很简单,但我查看了可用的文档:http://boto3.readthedocs.io/en/latest/reference/services/dynamodb.html#DynamoDB.Table.scan,但仍然遇到问题。任何帮助将不胜感激!
附:我尽量让帖子简单易懂(不包括我的所有程序代码),但是如果需要更多信息,我可以提供!
【问题讨论】:
标签: python python-2.7 amazon-dynamodb