快速解决pymongo操作mongodb的时区问题


Posted in Python onDecember 05, 2020

如下所示:

1、mongodb的日期时间格式是UTC时间,中国时间 = UTC时间 +8

2、可在pymongo客户端加入时区以解决此问题:

import pytz
from pymongo import MongoClient
from datetime import datetime
tzinfo = pytz.timezone('Asia/Shanghai')

client = MongoClient(
  host="127.0.0.1",
  port=27017,
  username="root",
  password="123456",
  authSource="admin", # 在哪个数据库进行身份验证,默认是admin
  tz_aware=True, # 设置为True
  tzinfo=tzinfo  # 加入时区信息
)
db = client["test"]
collection = db["mytest"]

datetime.now() # 2020-04-11 10:42:42.452433
ret = collection.insert_one({
  "name": "测试5",
  "create_time": tzinfo.localize(datetime.now()) 
})
# create_time不能使用datetime.now()获取时间,
# 应该使用 datetime.utcnow()或 tzinfo.localize(datetime.now())或 datetime.now(tz=tzinfo)
# 这样读取数据时日期时间才是标准的中国时间
res = collection.find_one({"name": "测试5"})
print(res)
# {'_id': ObjectId('5e912ea261d252f76350728a'), 'name': '测试5', 'create_time': datetime.datetime(2020, 4, 11, 10, 42, 42, 452000, tzinfo=<DstTzInfo 'Asia/Shanghai' CST+8:00:00 STD>)}

# 下面测试直接使用datetime.now()的情形
datetime.now() # 2020-04-11 10:49:41.899445
collection.insert_one({
  "name": "测试6",
  "create_time": datetime.now()
})
res = collection.find_one({"name": "测试6"})
# {'_id': ObjectId('5e913045143015041d776d08'), 'name': '测试6', 'create_time': datetime.datetime(2020, 4, 11, 18, 49, 41, 899000, tzinfo=<DstTzInfo 'Asia/Shanghai' CST+8:00:00 STD>)}
# 可以看到时间+8小时

补充知识:pymongo 按照时间查询

我就废话不多说了,大家还是直接看代码吧~

from pymongo import MongoClient 
client=MongoClient('localhost',27017)
db=client.adv.message
from datetime import datetime
import pandas as pd
#db.insert_one({'player_id':js2['player_id'],'message':js2['message'],
#        'label':label,'predict_time':datetime.datetime.now()})

#按照时间查询
q1={"predict_time":{"$gte" :datetime(2019,9,25) ,"$lte": datetime(2019,9,28)}}  
l1=list(db.find(q1))

#l1=list(db.find({}))
df=pd.DataFrame(l1)

以上这篇快速解决pymongo操作mongodb的时区问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python多线程结合队列下载百度音乐的方法
Jul 27 Python
Python HTTP客户端自定义Cookie实现实例
Apr 28 Python
python中将字典形式的数据循环插入Excel
Jan 16 Python
Python实现的端口扫描功能示例
Apr 08 Python
pandas使用apply多列生成一列数据的实例
Nov 28 Python
对Python 除法负数取商的取整方式详解
Dec 12 Python
Python动态语言与鸭子类型详解
Jul 01 Python
详解pandas数据合并与重塑(pd.concat篇)
Jul 09 Python
Python中的 ansible 动态Inventory 脚本
Jan 19 Python
python实现猜数游戏
Mar 27 Python
使用Jupyter notebooks上传文件夹或大量数据到服务器
Apr 14 Python
python opencv将多个图放在一个窗口的实例详解
Feb 28 Python
pymongo insert_many 批量插入的实例
Dec 05 #Python
python 写一个文件分发小程序
Dec 05 #Python
解决Pymongo insert时会自动添加_id的问题
Dec 05 #Python
用python对oracle进行简单性能测试
Dec 05 #Python
python mongo 向数据中的数组类型新增数据操作
Dec 05 #Python
python自动从arxiv下载paper的示例代码
Dec 05 #Python
python使用dlib进行人脸检测和关键点的示例
Dec 05 #Python
You might like
php仿discuz分页效果代码
2008/10/02 PHP
dedecms系统的广告设置代码 基础版本
2010/04/09 PHP
解析PHP中如何将数组变量写入文件
2013/06/06 PHP
一个小型js框架myJSFrame附API使用帮助
2008/06/28 Javascript
JavaScript的document对象和window对象详解
2010/12/30 Javascript
jQuery焦点图插件SaySlide
2015/12/21 Javascript
Jquery轮播效果实现过程解析
2016/03/30 Javascript
jquery判断类型是不是number类型的实例代码
2016/10/07 Javascript
关于Vue.js一些问题和思考学习笔记(1)
2016/12/02 Javascript
Vue 过渡(动画)transition组件案例详解
2017/01/22 Javascript
vue的安装及element组件的安装方法
2018/03/09 Javascript
vue webpack实用技巧总结
2018/04/24 Javascript
vue v-model动态生成详解
2018/06/30 Javascript
微信小程序局部刷新触发整页刷新效果的实现代码
2018/11/21 Javascript
从源码里了解vue中的nextTick的使用
2018/11/22 Javascript
node.js微信小程序配置消息推送的实现
2019/02/13 Javascript
JS实现计算小于非负数n的素数的数量算法示例
2019/02/26 Javascript
JavaScript实现的滚动公告特效【基于jQuery】
2019/07/10 jQuery
你不知道的 TypeScript 高级类型(小结)
2020/08/28 Javascript
vue使用transition组件动画效果的实例代码
2021/01/28 Vue.js
详谈python在windows中的文件路径问题
2018/04/28 Python
Python3.5集合及其常见运算实例详解
2019/05/01 Python
Python实现Linux监控的方法
2019/05/16 Python
pytorch 实现查看网络中的参数
2020/01/06 Python
给keras层命名,并提取中间层输出值,保存到文档的实例
2020/05/23 Python
html5 canvas绘制网络字体的常用方法
2019/08/26 HTML / CSS
数据库方面面试题
2012/04/22 面试题
公司新员工的演讲稿注意事项
2014/01/01 职场文书
个人自我评价范文
2014/02/05 职场文书
经理助理岗位职责
2014/03/05 职场文书
员工离职证明范本
2015/06/12 职场文书
公司董事任命书
2015/09/21 职场文书
详解python中[-1]、[:-1]、[::-1]、[n::-1]使用方法
2021/04/25 Python
Vue的列表之渲染,排序,过滤详解
2022/02/24 Vue.js
css常用字体属性与背景属性介绍
2022/02/28 HTML / CSS
Mysql中的触发器定义及语法介绍
2022/06/25 MySQL