gpt4 book ai didi

python-3.x - 使用 boto3 和 dynamodb scan 查找 2 个日期之间的项目

转载 作者:行者123 更新时间:2023-12-03 03:40:07 24 4
gpt4 key购买 nike

我正在将 NodeJS 后端迁移到 Python3.6。

在 NodeJS 中,我能够使用 aws SDK 获取两个日期之间的项目,如下所示:

```

var now = moment().tz("Pacific/Auckland").format()
var yesterday = moment().add(-24,"Hours").tz("Pacific/Auckland").format()
var docClient = new AWS.DynamoDB.DocumentClient();
var params = {
TableName : process.env.TableName,
FilterExpression : '#ts between :val1 and :val2',
ExpressionAttributeNames: {
"#ts": "timeStamp",
},
ExpressionAttributeValues: {
':val1': yesterday,
':val2': now
}
}

```

这工作得很好,但是 boto3 中的 Between 函数似乎没有做同样的事情。

这是我当前用来尝试获得类似内容的代码:

```

import boto3
import time
from datetime import datetime, timedelta
from boto3.dynamodb.conditions import Key, Attr

dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('table_name')

now = int(datetime.timestamp(datetime.now()))
three_hours_ago = int(datetime.timestamp(datetime.now() - timedelta(hours=3)))

fe = Key('timeStamp').between(three_hours_ago,now);
response = table.scan(
FilterExpression=fe
)
print(response)

```

这不会返回任何项目,我确信这两个日期之间有项目。

任何帮助将不胜感激。

最佳答案

我设法使用以下代码解决了这个问题:

now             = datetime.datetime.now()
three_hours_ago = now - datetime.timedelta(hours=3)
# TODO make the db UTC
now = now.strftime('%FT%T+13:00')
three_hours_ago = three_hours_ago.strftime('%FT%T+13:00')

fe = Key('timeStamp').between(three_hours_ago,now);
response = table.scan(
FilterExpression=fe
)

关于python-3.x - 使用 boto3 和 dynamodb scan 查找 2 个日期之间的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49344272/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com