我对 DynamoDB 很陌生。我想查询一定时间范围内的所有数据。
column = "timerange" 是主排序键
column = "name" 是主分区键。
我想在 2 个时间范围内获取所有数据。
这是我的查询。
from decimal import *
from boto3.dynamodb.conditions import Key, Attr
import boto3
import time
from datetime import datetime
dynamo = boto3.resource('dynamodb')
table = dynamo.Table('tablename')
a = time.mktime(datetime.strptime('2020-03-26 14:29:10','%Y-%m-%d %H:%M:%S').timetuple())
b = time.mktime(datetime.strptime('2020-03-26 14:30:10','%Y-%m-%d %H:%M:%S').timetuple())
response = table.query(
KeyConditionExpression =
Key('timerange').between(Decimal(a), Decimal(b)))
这给了我一个错误ClientError: An error occurred (ValidationException) when calling the Query operation: Query condition missed key schema element:
搜索互联网后,我发现您需要在查询中包含主分区键,因此我尝试了https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Condition 中的 Contains 方法。 html
response = table.query(
KeyConditionExpression =
Key('name').contains('a', 'b') &
Key('timerange').between(Decimal(a), Decimal(b)))
我显然不完全理解。
如何获取给定时间范围 [a,b] 内的所有数据?