天天看点

Python读取mongodb采坑记录

pymongo在读写dataframe时自动的相差8个小时

  1. dataframe数据集预览
    Python读取mongodb采坑记录
  2. 查看一下数据的类型
    Python读取mongodb采坑记录

可以看到,collect_time的数据类型是datetime64

  1. 写入mongodb
    connections.insert(json.loads(data_final.T.to_json()).values())
               
  2. 查看数据库
    Python读取mongodb采坑记录
    通过对比我们发现,当将 datetime64的数据存入mongodb时,时间会自动的增加8小时
  3. 读取数据
    Python读取mongodb采坑记录

可以看到,读出来之后所有的时间都少了8小时

总结:MongoDB存储时间类型数据时,都是先转换为UTC时间,然后存储到数据库中,如果将本地时间存入到MongoDB数据库时,将本地时间减去8小时(用到了datetime.timedelta模块),

import datetime即:datetime.datetime.now()-datetime.timedelta(hours=8), 相反, 获取MongoDB数据库存入的时间数据,需要加8小时

即:data[‘updata_time’]+datetime.timedelta(hours=8)

Python读取mongodb采坑记录

原因已找到:

Python读取mongodb采坑记录

pd.to_datetime()将时间戳转化为日期时是没有时区信息的,即pd.to_datetime()认为时间戳是UTC时间,故此操作中为了显示本地时间可以手动增加8小时

Python读取mongodb采坑记录

参考:

https://huangzhw.github.io/2017/10/22/mongodb-date/