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 ...
随机推荐
- Spring之事务操作(注解)
事务操作步骤: <!-- 第一步.配置事务管理器 --> <bean id="transactionManager" class="org.spring ...
- #LOJ2564 SDOI2018 原题识别 主席树
转载请注明原文地址:http://www.cnblogs.com/LadyLex/p/9057297.html 原题链接: 今天考试考了前天的SDOI考题 天啊我菜爆,只有T2拿了30分 然后考试后半 ...
- Spring MVC 异步测试
从spring3.2开始,支持servlet3的异步请求,这对于处理耗时的请求如缓慢的数据库查询是非常有好处的,不至于很快的耗光servlet的线程池,影响可扩展性. 让我们先来了解一下servlet ...
- Java Socket/HttpURLConnection读取HTTP网页
以读取百度的http网页为例.如果知道了IP地址和端口,然后新建一个Socket,就直接去读百度的首页,根本没反应,原因是www.baidu.com是以http协议传输的,而现在要以Socket原始的 ...
- dp乱写2:论dp在不在dp中(但在dp范畴)内的应用
最近正儿八经的学习了dp,有一些题目非常明显看出来就是dp了比如说:过河卒.方格取数.导弹拦截.加分二叉树.炮兵阵地更加明显的还有:采药.装箱问题.过河.金明的预算方案.今天来谈谈dp的dp在不在dp ...
- 【bzoj1006】 HNOI2008—神奇的国度
http://www.lydsy.com/JudgeOnline/problem.php?id=1006 (题目链接) 题意 求弦图的最小染色数. Solution 弦图,详情参见论文. 这里我写的加 ...
- Java基础-SSM之Spring快速入门篇
Java基础-SSM之Spring快速入门篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java ...
- Spark记录-Scala循环语句
Scala while循环语句 当给定条件为真时,while循环重复一个语句或一组语句.它在执行循环体之前测试条件状态. 只要给定的条件为真,while循环语句重复执行目标语句. object Dem ...
- javascript私有静态成员
就私有静态成员而言,指的是成员具有如下属性:1.以同一个构造函数创建的所有对象共享该成员.2.构造函数外部不可访问该成员. //构造函数 var Gadget = (function(){ //静态变 ...
- .gitignore 失效问题解决
对于Git,已经跟踪的文件,再加入到.gitignore中,会使忽略失效.使用下面3个命令使它重新生效 git rm -r --cached . git add . git commit -m &qu ...