[英]Only get new data from DynamoDB using Python
我正在尝试使用 Python 从 DynamoDB 事务表中导出数据。 到目前为止,我能够从表中获取所有数据,但我想添加一个过滤器,允许我只获取从某个日期到今天的数据。
有一个名为CreatedAt
的字段表示进行交易的时间,我正在考虑使用该字段来过滤新数据。
这是我一直用来查询表的代码,如果有人能告诉我如何将此过滤器应用到此脚本中,那将非常有帮助。
import pandas as pd
from boto3.dynamodb.conditions
aws_access_key_id = '*****'
aws_secret_access_key = '*****'
region='****'
dynamodb = boto3.resource(
'dynamodb',
aws_access_key_id=aws_access_key_id,
aws_secret_access_key=aws_secret_access_key,
region_name=region
)
transactions_table = dynamodb.Table('transactions_table')
result = transactions_table.scan()
items = result['Items']
df_transactions_table = pd.json_normalize(items)
print(df_transactions_table)
谢谢!
Boto3 允许将 FilterExpressions 作为 DynamoDB 查询的一部分,以实现对字段的过滤。 看这里
可选地使用 FilterExpressions 仍将消耗相同数量的读取容量单位。
您需要使用如下所示的FilterExpression
:
import boto3
from boto3.dynamodb.conditions import Key, Attr, And
aws_access_key_id = '*****'
aws_secret_access_key = '*****'
region='****'
dynamodb = boto3.resource(
'dynamodb',
aws_access_key_id=aws_access_key_id,
aws_secret_access_key=aws_secret_access_key,
region_name=region
)
transactions_table = dynamodb.Table('transactions_table')
result = transactions_table.scan(
FilterExpression=Attr('CreatedAt').gt('2020-08-10'),
)
items = result['Items']
df_transactions_table = pd.json_normalize(items)
print(df_transactions_table)
您可以从有关Boto3 Scan和FilterExpression的文档中了解更多信息。
一些建议:请不要像在此代码中那样对密钥进行硬编码,请使用 IAM 角色。 如果您在本地进行测试,请配置 AWS CLI,它将提供您在测试时可以使用的凭证,这样您就不会出错并在 GitHub 等上共享密钥...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.