快速解决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 json encode datetime类型
Dec 28 Python
python根据距离和时长计算配速示例
Feb 16 Python
Python库urllib与urllib2主要区别分析
Jul 13 Python
在Python的Django框架中编写错误提示页面
Jul 22 Python
Python如何生成树形图案
Jan 03 Python
Python3之读取连接过的网络并定位的方法
Apr 22 Python
Python装饰器限制函数运行时间超时则退出执行
Apr 09 Python
Python容器使用的5个技巧和2个误区总结
Sep 26 Python
Python SQLAlchemy入门教程(基本用法)
Nov 11 Python
浅谈opencv自动光学检测、目标分割和检测(连通区域和findContours)
Jun 04 Python
Python Selenium XPath根据文本内容查找元素的方法
Dec 07 Python
Python数据分析入门之数据读取与存储
May 13 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
1 Tube Radio
2021/03/02 无线电
通过对php一些服务器端特性的配置加强php的安全
2006/10/09 PHP
PHP分页显示制作详细讲解
2006/10/09 PHP
php UTF8 文件的签名问题
2009/10/30 PHP
PHP中PDO的事务处理分析
2016/04/07 PHP
图文详解PHP环境搭建教程
2016/07/16 PHP
ThinkPHP模板标签eq if 中区分0,null,false的方法
2017/03/24 PHP
JavaScript 存在陷阱 删除某一区域所有节点
2010/05/10 Javascript
jQuery dialog 异步调用ashx,webservice数据的代码
2010/08/03 Javascript
actionscript与javascript的区别
2011/05/25 Javascript
JS中获取数据库中的值的方法
2013/07/14 Javascript
JavaScript数据库TaffyDB用法实例分析
2015/07/27 Javascript
微信小程序学习笔记之本地数据缓存功能详解
2019/03/29 Javascript
JS实现烟花爆炸效果
2020/03/10 Javascript
基于JavaScript获取url参数2种方法
2020/04/17 Javascript
基于JavaScript实现表格隔行换色
2020/05/08 Javascript
详解JavaScript类型判断的四种方法
2020/10/21 Javascript
[01:15:15]VG VS EG Supermajor小组赛B组胜者组第一轮 BO3第二场 6.2
2018/06/03 DOTA
Python中使用copy模块实现列表(list)拷贝
2015/04/14 Python
python中pandas.DataFrame对行与列求和及添加新行与列示例
2017/03/12 Python
[原创]Python入门教程4. 元组基本操作
2018/10/31 Python
python Gunicorn服务器使用方法详解
2019/07/22 Python
Python selenium模块实现定位过程解析
2020/07/09 Python
美国在线家居装饰店:Belle&June
2018/10/24 全球购物
100%羊绒:NakedCashmere
2020/08/26 全球购物
企划经理的岗位职责
2013/11/17 职场文书
护理中职生求职信范文
2014/02/24 职场文书
幼儿园师德师风学习材料
2014/05/29 职场文书
化学专业毕业生求职信
2014/07/28 职场文书
主要领导对照检查材料
2014/08/26 职场文书
中秋节国旗下演讲稿
2014/09/05 职场文书
村当支部个人对照检查材料思想汇报
2014/10/06 职场文书
2015年重阳节活动主持词
2015/07/30 职场文书
毕业生的自我鉴定表范文
2019/05/16 职场文书
古诗之爱国古诗5首
2019/09/20 职场文书
redis 解决库存并发问题实现数量控制
2022/04/08 Redis