快速解决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 zip文件 压缩
Dec 24 Python
Python内置的字符串处理函数整理
Jan 29 Python
Python set集合类型操作总结
Nov 07 Python
python实现读取并显示图片的两种方法
Jan 13 Python
python读取文本绘制动态速度曲线
Jun 21 Python
使用Template格式化Python字符串的方法
Jan 22 Python
在python中实现调用可执行文件.exe的3种方法
Jul 07 Python
python从list列表中选出一个数和其对应的坐标方法
Jul 20 Python
Python二维数组实现求出3*3矩阵对角线元素的和示例
Nov 29 Python
Python动态导入模块:__import__、importlib、动态导入的使用场景实例分析
Mar 30 Python
Python如何将模块打包并发布
Aug 30 Python
python实现暗通道去雾算法的示例
Sep 27 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
回答PHPCHINA上的几个问题:URL映射
2007/02/14 PHP
array_multisort实现PHP多维数组排序示例讲解
2011/01/04 PHP
CI框架在CLI下执行占用内存过大问题的解决方法
2014/06/17 PHP
PHP实现获取客户端IP并获取IP信息
2015/03/17 PHP
PHP实现关键字搜索后描红功能示例
2019/07/03 PHP
PHP使用PDO、mysqli扩展实现与数据库交互操作详解
2019/07/20 PHP
同一个表单 根据要求递交到不同页面的实现方法小结
2009/08/05 Javascript
加载列表时jquery获取ul中第一个li的属性
2014/11/02 Javascript
javascript滚轮事件基础实例讲解(37)
2017/02/14 Javascript
vue 中自定义指令改变data中的值
2017/06/02 Javascript
jquery DataTable实现前后台动态分页
2017/06/17 jQuery
实例详解JavaScript中setTimeout函数的执行顺序
2017/07/12 Javascript
基于JavaScript实现数码时钟效果
2020/03/30 Javascript
微信小程序--特定区域滚动到顶部时固定的方法
2019/04/28 Javascript
解决vuex数据页面刷新后初始化操作
2020/07/26 Javascript
[08:40]Navi Vs Newbee
2018/06/07 DOTA
在Python的列表中利用remove()方法删除元素的教程
2015/05/21 Python
Python如何通过subprocess调用adb命令详解
2017/08/27 Python
解决Python安装后pip不能用的问题
2018/06/12 Python
Python3.5局部变量与全局变量作用域实例分析
2019/04/30 Python
python实战串口助手_解决8串口多个发送的问题
2019/06/12 Python
用vue.js组件模拟v-model指令实例方法
2019/07/05 Python
Python 实现Serial 与STM32J进行串口通讯
2019/12/18 Python
Pycharm创建python文件自动添加日期作者等信息(步骤详解)
2021/02/03 Python
初中三年学生的学习自我评价
2013/11/13 职场文书
医院检讨书范文
2014/02/01 职场文书
行政答辩状范文
2015/05/21 职场文书
浪漫的婚礼主持词
2015/06/30 职场文书
2016年春季开学典礼新闻稿
2015/11/25 职场文书
《小摄影师》教学反思
2016/02/18 职场文书
低端且暴利的线上线下创业项目分享
2019/09/03 职场文书
利用前端HTML+CSS+JS开发简单的TODOLIST功能(记事本)
2021/04/13 Javascript
python获取对象信息的实例详解
2021/07/07 Python
浅析CSS在DevTools 中架构演变
2021/10/05 HTML / CSS
Python Django项目和应用的创建详解
2021/11/27 Python
Android实现获取短信验证码并自动填充
2023/05/21 Java/Android