Python 中 MongoDB 的 BSON 时间戳

问题描述 投票:0回答:1

我正在运行一个连接到 MongoDB 数据库和时间流集合的 python 脚本。我正在尝试在时间流中插入一个新文档。

newdata = {"metadata": { "ser": "129031", "type": "data" }, "timestamp": {"$date" : timestamp}, "val": value}
            
result = cur_collection.insert_one(newdata)

问题在于时间戳值应该采用某种 BSON 格式。然而,无论我尝试什么,我都无法在 python 中正确生成这个值。我想做的就是生成当前 UTC 时间戳并传递它。

这个 BSON 值应该是 64 位,自纪元以来有 32 位秒,32 位有毫秒。我可能可以手动生成这个,但是很难相信

我尝试过的一些事情包括:

            #timestamp = bson.datetime_ms.DatetimeMS(time.time())
            #timestamp = int(time.time()*1000.0)#time.time() 
            #Timestamp.Timestamp(datetime.now(), 1) #dt.now()
            #timestamp = datetime.now()
            #timestamp = datetime.datetime.now(pytz.utc)
            
            #eastern = dateutil.tz.gettz('US/Eastern')
            
            #timestamp = datetime.now(tz=eastern)
            #timestamp = new Date().getTime()
            timestamp =  Timestamp(1412180887, 1)

我们需要一个整数,我得到的最好结果是 XXXXXXX.YYYYY。如果我将整数移动 32,也许可以将分数相乘并相加。

当我尝试运行代码时,出现错误

"'timestamp' must be present and contain a valid BSON UTC datetime value"
python mongodb pymongo
1个回答
0
投票

根据您的评论:

Python

datetime
类将为您创建一个有效的日期时间。我刚刚尝试了以下方法,它工作正常:

timestamp = datetime.datetime.now()
record = {"title": "today", "timestamp" : timestamp }
collection.insert_one(record)
© www.soinside.com 2019 - 2024. All rights reserved.