小编pak*_*ill的帖子

如何使用 PyMongo 检索感知时区日期时间对象

我面临 PyMongo 3.9 和日期时间对象的问题。在我的 MongoDB 4.x 服务器中,我有一个像这样的文档:

{
    "_id" : 2,
    "status" : "Running",
    "start_date" : ISODate("2020-11-19T05:03:54.576Z")
}
Run Code Online (Sandbox Code Playgroud)

如您所见,start_date位于 UTC 时区,但是当我使用 PyMongo 检索文档时,时区丢失了:

db.get_collection('my_collection').find_one({'_id': {'$eq': 2}})
Run Code Online (Sandbox Code Playgroud)

我在这里读到https://pymongo.readthedocs.io/en/stable/api/bson/codec_options.html Mongo默认返回一个天真的时区日期时间,为了获得一个意识时区日期时间,我应该添加这个选项到查询:

opts=CodecOptions(tz_aware=True)
db.get_collection('my_collection', codec_options=opts).find_one({'_id': {'$eq': 99}})
Run Code Online (Sandbox Code Playgroud)

但这意味着依赖开发人员的记忆来记住将此选项添加到每个查询中。所以我的问题是:有没有什么方法可以配置 MongoDB、PyMongo 或其他任何东西来始终返回感知时区日期时间对象?

太感谢了!

datetime mongodb python-3.x pymongo-3.x

3
推荐指数
1
解决办法
1552
查看次数

标签 统计

datetime ×1

mongodb ×1

pymongo-3.x ×1

python-3.x ×1