我正在运行一个连接到 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
datetime
类将为您创建一个有效的日期时间。我刚刚尝试了以下方法,它工作正常:
timestamp = datetime.datetime.now()
record = {"title": "today", "timestamp" : timestamp }
collection.insert_one(record)