快速解决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 相关文章推荐
30分钟搭建Python的Flask框架并在上面编写第一个应用
Mar 30 Python
Python实现批量转换文件编码的方法
Jul 28 Python
Python实现的下载网页源码功能示例
Jun 13 Python
python与C互相调用的方法详解
Jul 14 Python
11月编程语言排行榜 Python逆袭C#上升到第4
Nov 15 Python
使用python获取csv文本的某行或某列数据的实例
Apr 03 Python
Python使用pickle模块实现序列化功能示例
Jul 13 Python
python pytest进阶之fixture详解
Jun 27 Python
浅谈pytorch grad_fn以及权重梯度不更新的问题
Aug 20 Python
Python Django中间件,中间件函数,全局异常处理操作示例
Nov 08 Python
Tensorflow 自定义loss的情况下初始化部分变量方式
Jan 06 Python
python 中的paramiko模块简介及安装过程
Feb 29 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学习笔记 数组遍历实现代码
2011/06/09 PHP
PHP设计模式之委托模式定义与用法简单示例
2018/08/13 PHP
PHP simplexml_load_file()函数讲解
2019/02/03 PHP
jquery链式操作的正确使用方法
2014/01/06 Javascript
Jquery 点击按钮自动高亮实现原理及代码
2014/04/25 Javascript
js实现表单多按钮提交action的处理方法
2015/10/24 Javascript
学习jQuey中的return false
2015/12/18 Javascript
基于RequireJS和JQuery的模块化编程日常问题解析
2016/04/14 Javascript
ionic2 tabs 图标自定义实例
2017/03/08 Javascript
jQuery实现的form转json经典示例
2017/10/10 jQuery
JS兼容所有浏览器的DOMContentLoaded事件
2018/01/12 Javascript
详解基于Koa2开发微信二维码扫码支付相关流程
2018/05/16 Javascript
vue 调用 RESTful风格接口操作
2020/08/11 Javascript
vue 解决provide和inject响应的问题
2020/11/12 Javascript
[44:40]2018DOTA2亚洲邀请赛3月30日 小组赛A组Liquid VS OG
2018/03/31 DOTA
详解Python的Django框架中inclusion_tag的使用
2015/07/21 Python
python爬虫实现教程转换成 PDF 电子书
2017/02/19 Python
Python使用matplotlib绘图无法显示中文问题的解决方法
2018/03/14 Python
python实现图片识别汽车功能
2018/11/30 Python
Python 中包/模块的 `import` 操作代码
2019/04/22 Python
OpenCV+python实现实时目标检测功能
2020/06/24 Python
HTML5 创建canvas元素示例代码
2014/06/04 HTML / CSS
什么是.net
2015/08/03 面试题
高中打架检讨书
2014/02/13 职场文书
诉讼授权委托书范本
2014/10/05 职场文书
比赛主持人开场白
2015/05/29 职场文书
田径运动会广播稿
2015/08/19 职场文书
外出考察学习心得体会
2016/01/18 职场文书
2016年安全生产先进个人事迹材料
2016/02/29 职场文书
python实现网络五子棋
2021/04/11 Python
详解MySQL事务的隔离级别与MVCC
2021/04/22 MySQL
如何用 Python 子进程关闭 Excel 自动化中的弹窗
2021/05/07 Python
雄兵连:第三季先行图公开,天使恶魔联合,银河之力的新力量
2021/06/11 国漫
Vue如何清空对象
2022/03/03 Vue.js
MySQL中rank() over、dense_rank() over、row_number() over用法介绍
2022/03/23 MySQL
SpringBoot详解执行过程
2022/07/15 Java/Android