Python 驱动 MongoDB 示例(PyMongo)
Python 的MongoDB驱动 pymongo ,使用pip Install pymongo安装即可
最近发现网上的很多实例已经过时了,在此自我探究记录下来。
编写一个接口类来支持MongoDB的基本操作(连接数据库,添加文档,删除文档,更新文档,读取文档),代码基本功能已通过测试,但难免还有一些BUG,如果有,望指正,谢谢。
测试环境 Centos7 Python3.6.3
from pymongo import MongoClient
from bson.objectid import ObjectId
import syslog class MongoDriver(object):
def __init__(self, ip='localhost', port=27017):
"""Init MongoDB Option.
wait more option added.
"""
self.ip = ip
self.port = port def init_connect(self):
""" Connect To MongoDB.
return True or False.
"""
try:
self.client = MongoClient(self.ip, self.port)
except Exception as e:
syslog.syslog(syslog.LOG_ERR, "MongoClient Connect failed : " + str(e))
return False
else:
return True def init_db(self, db):
""" Connect To MongoDB -> DB.
return True or False.
"""
try:
self.db = self.client[db]
except Exception as e:
syslog.syslog(syslog.LOG_ERR, "MongoClient Getdb {db} failed:".format(db=db) + str(e))
self.db = ""
return False
else:
return True def init_collection(self, collection):
""" Connect To MongoDB -> DB -> collection.
return True or False.
""" try:
self.collection = self.db[collection]
except Exception as e:
syslog.syslog(syslog.LOG_ERR,\
"MongoClient GetCollection {collection} failed:".format(collection=collection) + str(e))
self.collection = ""
return False
else:
return True
def format_id(self, object_id):
"""
Format Id.
return a dict.
"""
return {'_id': ObjectId(object_id)} def insert_one(self, document):
"""
Insert One Document To MongoDB.
document must be a dict.
return a dict with document's inserted_id or False when Error occured
"""
if not isinstance(document, dict):
raise TypeError
try:
return self.collection.insert_one(document).inserted_id
except Exception as e:
syslog.syslog(syslog.LOG_ERR,\
"MongoClient Insert_one {document} failed:".format(document=document) + str(e))
return False def insert_many(self, documents):
"""
Insert Many Documents To MongoDB.
documents must be a list.
eveny document must be a dict.
return a list with documents's inserted_ids or False when Error occured
"""
if not isinstance(documents, list):
raise TypeError
for document in documents:
if not isinstance(document, dict):
raise TypeError
try:
return self.collection.insert_many(documents).inserted_ids
except Exception as e:
syslog.syslog(syslog.LOG_ERR,\
"MongoClient insert_many {document} failed:".format(document=document) + str(e))
return False def find_one_by_id(self, object_id):
"""
Find Result By Object_id.
Return a dict with a document
"""
if not isinstance(object_id, str):
raise TypeError
try:
return self.collection.find_one(self.format_id(object_id)) except Exception as e:
syslog.syslog(syslog.LOG_ERR,\
"MongoClient find_by_id {id} failed:".format(id=object_id) + str(e))
return False def find_one_by_param(self, kws):
"""
Find Document By Object_id.
return a dict with a document
"""
if not isinstance(kws, dict):
raise TypeError
try:
return self.collection.find_one(kws)
except Exception as e:
syslog.syslog(syslog.LOG_ERR,\
"MongoClient find_by_param {kws} failed:".format(kws=kws) + str(e))
return False def find_many_by_param(self, kws):
"""
Find Document By Object_id.
return a cursor object with a or many document
"""
if not isinstance(kws, dict):
raise TypeError
try:
return self.collection.find(kws)
except Exception as e:
syslog.syslog(syslog.LOG_ERR,\
"MongoClient find_by_param {kws} failed:".format(kws=kws) + str(e))
return False def update_one_by_id(self, object_id, kws):
"""
Update Document By Object_id.
Return True or False
"""
if not isinstance(kws, dict) :
raise TypeError try:
self.collection.update_one(self.format_id(object_id), {"$set": kws}, upsert=False)
except Exception as e:
syslog.syslog(syslog.LOG_ERR,\
"MongoClient update_one_by_id failed:" + str(e))
return False
else:
return True
def update_one_by_param(self, condition, kws):
"""
Update Document By Object_id.
Return True or False
"""
if not isinstance(condition, dict) or not isinstance(kws, dict):
raise TypeError
try:
self.collection.update_one(condition, {"$set": kws}, upsert=False)
except Exception as e:
syslog.syslog(syslog.LOG_ERR,\
"MongoClient update_one_by_param failed:" + str(e))
return False
else:
return True def update_many_by_param(self, condition, kws):
"""
Update Document By Object_id.
Return True or False
"""
if not isinstance(condition, dict) or not isinstance(kws, dict):
raise TypeError
try:
self.collection.update_many(condition, {"$set": kws}, upsert=False)
except Exception as e:
syslog.syslog(syslog.LOG_ERR,\
"MongoClient update_many_by_param failed:" + str(e))
return False
else:
return True def remove_all(self):
"""
Remove all documents from a collection .
Return True or False
"""
try:
self.collection.remove()
except Exception as e:
syslog.syslog(syslog.LOG_ERR,\
"MongoClient remove_all failed:" + str(e))
return False
else:
return True def remove_documents(self, kws):
"""
Remove some documents from a collection .
Return True or False
"""
if not isinstance(kws, dict):
raise TypeError
try:
self.collection.remove(kws)
except Exception as e:
syslog.syslog(syslog.LOG_ERR,\
"MongoClient remove_documents failed:" + str(e))
return False
else:
return True
Python 驱动 MongoDB 示例(PyMongo)的更多相关文章
- Windows平台下为Python添加MongoDB支持PyMongo
到Python官网下载pymongo-2.6.3.win-amd64-py2.7.exe 安装pymongo-2.6.3.win-amd64-py2.7.exe 参照官方的用例进行测试 打开命令提示符 ...
- 2.1 python使用MongoDB 示例代码
import pymongo client = pymongo.MongoClient('localhost', 27017) # MongoDB 客户端 walden = client['walde ...
- CentOS平台下为Python添加MongoDB支持PyMongo
下载PyMongo [root@leezhen ~]# wget https://pypi.python.org/packages/source/p/pymongo/pymongo-2.6.3.tar ...
- MongoDB的安装与python操作MongoDB
一.安装MongoDB 因为我个人使用的是windows,就只记录下windows下的安装 1.下载安装 就是官网,下载msi,选个路径安装 2.配置 看见别的地方说需要手动在bin同级目录创建dat ...
- pymongo和mongoengine安装和使用教程 包含常用命令行和代码示例 | pymongo and mongoengine tutorial on ubuntu 16.04
本文首发于个人博客https://kezunlin.me/post/e88f04e5/,欢迎阅读最新内容! pymongo and mongoengine tutorial on ubuntu 16. ...
- MongoDB聚合查询及Python连接MongoDB操作
今日内容概要 聚合查询 Python操作MongoDB 第三方可视化视图工具 今日内容详细 聚合查询 Python操作MongoDB 数据准备 from pymongo import MongoCli ...
- Python 连接MongoDB并比较两个字符串相似度的简单示例
本文介绍一个示例:使用 pymongo 连接 MongoDB,查询MongoDB中的 字符串 记录,并比较字符串之间的相似度. 一,Python连接MongoDB 大致步骤:创建MongoClient ...
- python操作三大主流数据库(8)python操作mongodb数据库②python使用pymongo操作mongodb的增删改查
python操作mongodb数据库②python使用pymongo操作mongodb的增删改查 文档http://api.mongodb.com/python/current/api/index.h ...
- Python操作MongoDB代码示例
import pymongo #pip install pymongo安装python操作mongodb的模块 myclient=pymongo.MongoClient(host='127.0.0.1 ...
随机推荐
- Delphi 模式窗体返回值ModalResult的使用方法及注意事项(转)
1.基础知识简介: ModalResult是指一个模式窗体(form.showmodal)的返回值,一般用于相应窗体上按钮的ModalResult属性: 显示完窗体(关闭)后,会返回此属性预设的值做为 ...
- 使用fiddler的过滤条件
使用fiddler抓包的时候经常一下子显示很多的记录,看的眼花缭乱,需要这时候需要使用过滤条件来帮助你,一般常用的有三种过滤条件: 1.域名过滤,只显示特定域名的记录: *.baidu.com表示所有 ...
- ubuntu14.04如何设置静态IP的方法
第一步: 配置静态IP地址: 打开/etc/network/interfaces文件,内容为 auto lo iface lo inet loopback auto eth0 iface eth0 i ...
- 【bzoj4012】 HNOI2015—开店
http://www.lydsy.com/JudgeOnline/problem.php?id=4012 (题目链接) 题意 一棵树,每条边有正边权,每个点的点权非负.若干组询问,强制在线,每次查询点 ...
- 【洛谷P2661】信息传递
题目大意:给定一个有 N 个点,N 条边且每个点的出度均为 1 的有向图,求该有向图的一个最小环. 题解:由于每个点的出度均为 1,可知可能的情况只有以下几种:一个环或多个环,一个环+一条链.因此,可 ...
- logstash marking url as dead 问题解决
具体问题如下图所示: 将 INFO 信息打印大致如下所示: [2018-03-05T16:26:08,711][INFO ][logstash.setting.writabledirectory] C ...
- node.js原生后台进阶(二)
上一章讲到怎么样用原生node.js来获取GET.POST(urlencoded,formData)的参数,这一次我们更进一步,讲一下以下的点: 1.压缩(zlib) 2.流(stream) 3.路由 ...
- SQL记录-PLSQL集合
PL/SQL集合 集合是一个有序组具有相同的数据类型的元素.每个元素进行标识的唯一标表示其在集合中的位置. PL/SQL提供了三种集合类型: 索引表或关联数组 嵌套表 可变大小的数组或变长数组 Ora ...
- My latest news
2018.04.12 0:01 本站点停止更新,启用0x7c00.vip站点. 2018.03.23 复试报道(心态不太平稳).每一行的深入都是需要知识的积累和时间的沉淀,就像学法律.计算机等等.愿 ...
- 流媒体技术学习笔记之(十)HLS协议直播延时优化(35s到10S)
1.首先要了解HLS延时的机制,也就是为什么会延时,延时主要发生在什么地方. HTTP Live Streaming 并不是一个真正实时的流媒体系统,这是因为对应于媒体分段的大小和持续时间有一定潜在的 ...