当前位置: 代码网 > it编程>前端脚本>Python > 使用Python实现操作mongodb详解

使用Python实现操作mongodb详解

2025年02月14日 Python 我要评论
一、示例from pymongo import mongoclientfrom urllib.parse import quoteclass test_mongo: def __init__(s

一、示例

from pymongo import mongoclient
from urllib.parse import quote
class test_mongo:
    def __init__(self, host,port,user,pwd,db):
        self.host = host
        self.port = port
        self.user = user
        self.pwd = pwd
        self.db = db

    def build_conn_mongo(self):
        """
        功能:实现创建客户端
        :return: client
        """
        escaped_username = quote(self.user, safe='')
        escaped_password = quote(self.pwd, safe='')
        # 创建客户端对象,连接mongodb服务器
        client = mongoclient('mongodb://{0}:{1}@{2}:{3}/{4}'.format(escaped_username, escaped_password, self.host, self.port, self.db))
        return client

    def check_mongo(self,query=none):
        """
        功能:查询信息
        :param query:输入查询条件  eg:{"paid": "38ffefbe29ddcf3c9f574aa"}
        :return:返回信息,以及获取查询的条数
        """
        client = self.build_conn_mongo()
        db = client.iot_ota
        collection = db.集合名称
        results = collection.find(query)
        count= collection.count_documents(query)
        client.close()
        return results,count

    def update_mongo_by_query(self,query, set_value):
        """
        功能:按照条件修改一个记录
        :param query:输入查询条件  eg:query1 = {"paid": "38ffefbe291a375c4aa"}
        :param set_value:eg:{"$set":{"description":"yz测试"}}
        :return:返回基本信息
        """
        client = self.build_conn_mongo()
        db = client.iot_ota
        collection = db.集合名称
        results = collection.update_one(query, set_value)
        client.close()
        return results

    def delete_package_by_query(self,query):
        """
        功能:按照条件删除一个记录
        :param query:输入查询条件  eg:{"otid":202501221}
        :return:
        """
        client = self.build_conn_mongo()
        db = client.iot_ota
        collection = db.集合名称
        results = collection.delete_one(query)
        client.close()
        return results

二、常用指令

序号指令描述
1db = client.数据库名获取数据库
2db.collection.find()筛选所有记录
3db.collection.find({“key”:value})按照条件进行查询记录
4db.collection.count_documents(query)按照条件查询符合记录的条数
5db.collection.update_one(query, set_value))更新一条记录
6db.collection.delete_one(query)删除一条记录

三、遇到的问题

1、转义账户和密码,解决不符合rfc规范的问题

由于使用账号和密码中包含特殊字符出发点报如下错误:

username and password must be escaped according to rfc 3986, use urllib.parse.quote_plus

解决办法:

用python的urllib.parse模块中的quote函数来对用户名和密码进行转义

2、未指定权限内数据库,导致报权限错误

报错:pymongo.errors.operationfailure: authentication failed具体如下图

解决办法:–由于使用的账户的权限只有更db_name的权限,此处如不指明具体的数据库,则无法访问client = mongoclient(‘mongodb://{0}:{1}@x.x.x.x:27017/db_name’.format(escaped_username,escaped_password))

3、较新版本的pymongo中,update和remove方法已经被弃用

解决方法:

使用update_one()和update_many()方法来进行单条记录或多条记录的更新操作

使用delete_one和delete_many方法来替代‌remove

到此这篇关于使用python实现操作mongodb详解的文章就介绍到这了,更多相关python操作mongodb内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

  • python中ransac算法拟合圆的实现

    ransac为random sample consensus随机样本一致算法的缩写,它是根据一组包含异常数据的样本数据集,计算出数据的数学模型参数,得到有效样本数据的算法。它于19…

    2025年02月14日 前端脚本
  • pip install 安装路径修改的方法步骤

    一般我们需要安装第三方库的时候,都是进入cmd中用pip命令来进行安装。安装各类包,但是默认安装路径在c盘,极大占用空间,下面我们就来修改一下默认的安装路径。1,查看pip默认的安…

    2025年02月14日 前端脚本
  • 使用Python生成新春烟花效果的方法

    使用Python生成新春烟花效果的方法

    一、烟花效果的基本原理烟花效果的实现需要模拟以下几个关键过程:烟花发射:模拟烟花从底部发射到空中的过程。爆炸中心:烟花到达顶点后形成爆炸中心。粒子散射:烟花爆炸... [阅读全文]
  • Pyecharts图表交互功能的实现

    在数据可视化中,交互功能可以极大地提升用户体验,让用户能够更加深入地探索数据。pyecharts 提供了多种强大的交互功能,本篇将重点介绍如何使用缩略轴组件、配置图例交互,让我们的…

    2025年02月14日 前端脚本
  • Python读写常用数据文件的示例详解

    Python读写常用数据文件的示例详解

    python 提供了多种强大的工具和库,可以轻松实现对各种类型文件的读写操作,满足不同场景的数据处理需求。常见的文件类型包括文本文件(txt)、表格文件(csv... [阅读全文]
  • Pyecharts之特殊图表的实现示例

    Pyecharts之特殊图表的实现示例

    在数据可视化的世界里,除了常见的柱状图、折线图、饼图等,还有一些特殊的图表可以为我们带来独特的展示效果,帮助我们以更有趣、更直观的方式呈现数据。pyechart... [阅读全文]

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com