python - AWS DynamoDB BOTO3 混淆扫描
问题描述
基本上,如果我循环一个日期时间,每天执行具有日期范围的扫描,例如:
table_hook = dynamodb_resource.Table('table1')
date_filter = Key('date_column').between('2021-01-01T00:00:00+00:00', '2021-01-01T23:59:59+00:00')
response = table_hook.scan(FilterExpression=date_filter)
incoming_data = response['Items']
if (response['Count']) == 0:
return
_counter = 1
while 'LastEvaluatedKey' in response:
response = table_hook.scan(ExclusiveStartKey=response['LastEvaluatedKey'])
if (
parser.parse(response['Items'][0]['date_column']).replace(tzinfo=None) < parser.parse('2021-01-01T00:00:00+00:00').replace(tzinfo=None)
or
parser.parse(response['Items'][0]['date_column']).replace(tzinfo=None).replace(tzinfo=None) > parser.parse('2021-06-07T23:59:59+00:00').replace(tzinfo=None)
):
break
incoming_data.extend(response['Items'])
_counter+=1
print("|-> Getting page %s" % _counter)
在 Day1 到 Day2 循环结束时,它检索我 X 行,
但是,如果我以相同的方式(分页)执行相同的扫描,具有相同的范围(第 1 天到第 2 天),而不进行循环,它会检索我 Y 行,
为了变得更好,当我执行 table.describe_table(TableName='table1') 时,row_count 字段带有 Z 行,我真的不明白发生了什么!
解决方案
基于上述人员的帮助,我发现了我的错误,基本上我在执行分页时没有再次通过过滤器,所以固定代码是:
table_hook = dynamodb_resource.Table('table1')
date_filter = Key('date_column').between('2021-01-01T00:00:00+00:00', '2021-01-01T23:59:59+00:00')
response = table_hook.scan(FilterExpression=date_filter)
incoming_data = response['Items']
_counter = 1
while 'LastEvaluatedKey' in response:
response = table_hook.scan(FilterExpression=date_filter,
ExclusiveStartKey=response['LastEvaluatedKey'])
incoming_data.extend(response['Items'])
_counter+=1
print("|-> Getting page %s" % _counter)
推荐阅读
- r - Download spedific tab of google sheet in R
- python - 在夹具内的 pytest 中捕获 stderr/stdout
- html - 检查元素,复制某些 div?
- c# - 如何在应用程序启动时创建 Semaphoreslim 实例并在所有请求中使用相同的实例?
- javascript - 放置 gtag 事件片段头 Gatsby/React 站点
- javascript - 使用 setInterval 进行字符串更新的单独动画
- c# - Control.Invalidate() 或 Control.Invalidate(Rectangle)
- python - 将多线程和多处理与 concurrent.futures 相结合
- python - 无法让晨星工作,蟒蛇,股价
- c# - 指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束。- 如何?