天天看點

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/