MongoDB教程(十):Python集成mongoDB

💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝你生活愉快!

文章目录

      • 引言
      • 一、环境准备
        • 1. 安装 MongoDB
        • 2. 安装 PyMongo
      • 二、连接 MongoDB
        • 1. 创建连接
        • 2. 选择集合
      • 三、基本的 CRUD 操作
        • 1. 插入文档
        • 2. 查询文档
        • 3. 更新文档
        • 4. 删除文档
      • 四、高级功能:聚合框架
      • 五、异常处理与连接管理
      • 六、结论

引言

在现代软件开发中,Python 以其简洁的语法和强大的库支持,成为了数据科学、Web 开发、自动化脚本等多个领域的首选语言。MongoDB,作为一款流行的 NoSQL 数据库,以其灵活性和高性能,广泛应用于海量数据的存储和管理。本文将详细介绍如何在 Python 应用中引入 MongoDB,涵盖库的安装、数据库连接、基本的 CRUD 操作,以及一些高级功能的使用,通过具体案例代码展示每一个步骤。

一、环境准备

1. 安装 MongoDB

确保你的系统中已经安装并运行了 MongoDB。如果尚未安装,可以从 MongoDB 官方网站下载安装包,按照官方文档完成安装步骤。

2. 安装 PyMongo

PyMongo 是 MongoDB 的官方 Python 驱动程序,可以轻松地在 Python 中操作 MongoDB。使用 pip 安装 PyMongo:

pip install pymongo

二、连接 MongoDB

1. 创建连接

使用 PyMongo 创建与 MongoDB 的连接:

from pymongo import MongoClient# 创建MongoClient对象,连接本地MongoDB,默认端口为27017
client = MongoClient('mongodb://localhost:27017/')
# 选择或创建一个数据库,例如 'mydatabase'
db = client['mydatabase']
2. 选择集合

在数据库中选择或创建一个集合:

# 选择或创建一个集合,例如 'mycollection'
collection = db['mycollection']

三、基本的 CRUD 操作

1. 插入文档

向集合中插入一条文档:

# 创建一个文档
document = {"name": "John Doe", "age": 30, "email": "johndoe@example.com"}# 插入文档
result = collection.insert_one(document)
print(f"Inserted document with ID: {result.inserted_id}")
2. 查询文档

从集合中查询文档:

# 查询第一个匹配的文档
document = collection.find_one({"name": "John Doe"})
print(document)# 查询所有匹配的文档
for doc in collection.find({"age": {"$gt": 25}}):print(doc)
3. 更新文档

更新集合中的文档:

# 更新文档
result = collection.update_one({"name": "John Doe"}, {"$set": {"age": 31}})
print(f"Modified {result.modified_count} documents")
4. 删除文档

从集合中删除文档:

# 删除文档
result = collection.delete_one({"name": "John Doe"})
print(f"Deleted {result.deleted_count} documents")

四、高级功能:聚合框架

MongoDB 的聚合框架提供了强大的数据处理能力,例如聚合、分组、排序等。下面是一个使用聚合框架的示例:

# 聚合查询,计算每个城市的用户数量
pipeline = [{"$group": {"_id": "$city", "count": {"$sum": 1}}},{"$sort": {"count": -1}}
]results = collection.aggregate(pipeline)
for result in results:print(result)

五、异常处理与连接管理

在与 MongoDB 交互时,应考虑异常处理和连接管理:

try:# 执行数据库操作result = collection.insert_one(document)
except Exception as e:print(f"An error occurred: {e}")# 在操作完成后关闭连接
client.close()

六、结论

通过本文,我们详细介绍了如何在 Python 应用中引入 MongoDB,从库的安装、连接配置,到基本的 CRUD 操作,再到聚合框架的使用,涵盖了从初级到高级的功能。通过具体的代码示例,开发者可以快速上手,将 MongoDB 的强大功能集成到自己的 Python 应用中,以实现更高效、灵活的数据存储和处理。在实际项目中,根据具体需求选择合适的方法和工具,可以进一步提升应用的性能和可靠性。


喜欢博主的同学,请给博主一丢丢打赏吧↓↓↓您的支持是我不断创作的最大动力哟!感谢您的支持哦😘😘😘
打赏下吧

💝💝💝如有需要请大家订阅我的专栏【MongoDB系列】哟!我会定期更新相关系列的文章
💝💝💝关注!关注!!请关注!!!请大家关注下博主,您的支持是我不断创作的最大动力!!!

MongoDB相关文章索引文章链接
MongoDB教程(一):Linux系统安装mongoDB详细教程MongoDB教程(一):Linux系统安装mongoDB详细教程
MongoDB教程(二):mongoDB引用shellMongoDB教程(二):mongoDB引用shell
MongoDB教程(三):mongoDB用户管理MongoDB教程(三):mongoDB用户管理
MongoDB教程(四):mongoDB索引MongoDB教程(四):mongoDB索引
MongoDB教程(五):mongoDB聚合框架MongoDB教程(五):mongoDB聚合框架
MongoDB教程(六):mongoDB复制副本集MongoDB教程(六):mongoDB复制副本集
MongoDB教程(七):mongoDB分片MongoDB教程(七):mongoDB分片
MongoDB教程(八):mongoDB数据备份与恢复MongoDB教程(八):mongoDB数据备份与恢复
MongoDB教程(九):java集成mongoDBMongoDB教程(九):java集成mongoDB

❤️❤️❤️觉得有用的话点个赞 👍🏻 呗。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄
💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍
🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3247142.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

golang单元测试性能测试常见用法

关于go test的一些说明 golang安装后可以使用go test工具进行单元测试 代码片段对比的性能测试,使用起来还是比较方便,下面是一些应用场景 平时自己想做一些简单函数的单元测试,不用每次都新建一个main.go 然后go run main.go相对某个功能做下性能测试 看下cpu/内存…

WEB前端05-JavaScrip基本对象

JavaScript对象 1.Function对象 函数的创建 //方法一:自定义函数 function 函数名([参数]) {函数体[return 表达式] }//方法二:匿名函数 (function([参数]) {函数体[return 表达式] }); **使用场景一:定义后直接调用使用(只使用一次) (fun…

RISC-V在线反汇编工具

RISC-V在线反汇编工具: https://luplab.gitlab.io/rvcodecjs/#q34179073&abifalse&isaAUTO 不过,似乎,只支持RV32I、RV64I、RV128I指令集:

Linux·基本指令(下)

1. mv 指令 (move) 语法:mv[选项] 源文件或目录 目标文件或目录 功能:将源文件或目录剪贴到一个新位置,或给源文件或目录改名但不会改变其内容 常用选项: -f :force 强制,如果目标文件已经存在,…

力扣622.设计循环队列

力扣622.设计循环队列 通过数组索引构建一个虚拟的首尾相连的环当front rear时 队列为空当front rear 1时 队列为满 (最后一位不存) class MyCircularQueue {int front;int rear;int capacity;vector<int> elements;public:MyCircularQueue(int k) {//最后一位不存…

vscode+SSH连接Ubuntu

目录 问题引入 基本思路 Permission denied, please try again 修改用户名与密码 新建用户 最终成功方案 问题引入 ssh 用户名ip地址。用户名是远端服务器的用户名&#xff0c;ip地址也是远端服务器的地址。linux虚拟机的ip地址与windous主体不一样&#xff0c;所以还需要…

微信小程序与本地MySQL数据库通信

微信小程序与本地MySQL数据库通信 因为本地MySQL服务器没有域名&#xff0c;也没有进行相应的请求操作封装&#xff0c;因此微信小程序没办法和数据库通信。 但是对于开发人员来说&#xff0c;没有数据库&#xff0c;那还能干撒&#xff1f;虽然我尝试过用json-server&#x…

【C++】类和对象·this指针

C中的类与C语言中的结构体有很多的相似的地方&#xff0c;可以说本质上除了结构体只能定义成员变量&#xff0c;以及结构体默认的访问控制权限是public之外与class没啥区别。但是结构体变量每次调用函数的时候需要指针&#xff0c;而类中的成员函数明明被保存在公共代码段&…

Redis之哈希类型

目录 一.命令 二.内部编码 1.压缩列表&#xff08;ziplist&#xff09; 2. 哈希表&#xff08;Hashtable&#xff09; 自动转换策略 三.作为缓存 Redis的学习专栏&#xff1a;http://t.csdnimg.cn/a8cvV 一.命令 HSET命令 设置hash中指定的字段&#xff08;field)的值,时…

Ubuntu22.04安装OMNeT++

一、官网地址及安装指南 官网地址&#xff1a;OMNeT Discrete Event Simulator 官网安装指南&#xff08;V6.0.3&#xff09;&#xff1a;https://doc.omnetpp.org/omnetpp/InstallGuide.pdf 官网下载地址&#xff1a;OMNeT Downloads 旧版本下载地址&#xff1a;OMNeT Old…

OAI 5G-NR源码架构

OAI 5G-NR源码架构 1 特性范围 目前gNB和5G-NRUE支持如下的配置&#xff1a; 工作模式&#xff1a;TDDCP长度&#xff1a;Normal CP子载波间隔&#xff1a; 30kHz信道带宽&#xff1a;40MHz(106PRB)、80MHz(217PRB)、100MHz(237PRB)天线端口&#xff1a;单波束时隙格式&…

Redis-应用

目录 应用 缓存雪崩、击穿、穿透和解决办法? 布隆过滤器是怎么工作的? 缓存的数据一致性怎么保证 Redis和Mysql消息一致性 业务一致性要求高怎么办? 数据库与缓存的一致性问题 数据库和缓存的一致性如何保证 如何保证本地缓存和分布式缓存的一致&#xff1f; 如果在…

solidity基础语法(以太坊solidity合约)

solidity基础语法&#xff08;以太坊solidity合约&#xff09; 1-值类型和取值范围2-引用类型3-引用类型高阶4-固定数组和动态数组 1-值类型和取值范围 https://learnblockchain.cn/docs/solidity/introduction-to-smart-contracts.html#subcurrency https://learnblockchain…

WEB前端06-DOM对象

BOM浏览器对象模型 浏览器对象模型&#xff1a;将浏览器的各个组成部分封装成对象。是用于描述浏览器中对象与对象之间层次关系的模型&#xff0c;提供了独立于页面内容、并能够与浏览器窗口进行交互的对象结构。 组成部分 Window&#xff1a;浏览器窗口对象 Navigator&…

Hadoop3:HDFS存储优化之小文件归档

一、情景说明 我们知道&#xff0c;NameNode存储一个文件元数据&#xff0c;默认是150byte大小的内存空间。 那么&#xff0c;如果出现很多的小文件&#xff0c;就会导致NameNode的内存占用。 但注意&#xff0c;存储小文件所需要的磁盘容量和数据块的大小无关。 例如&#x…

电脑压缩视频文件 电脑压缩视频大小的方法

在数字化时代&#xff0c;视频已成为我们记录生活、分享快乐的重要工具。然而&#xff0c;大尺寸的视频文件常常让分享和存储变得棘手。如何在保持视频画质的前提下&#xff0c;轻松减小视频文件大小&#xff1f;今天&#xff0c;就让我们一起探索苹果电脑上的几种高效视频压缩…

iPhone手机怎么识别藏文?藏语翻译通App功能介绍:藏文OCR识别提取文字

在工作学习的过程中&#xff0c;遇到不会的藏文&#xff0c;也不知道怎么把文字打出来&#xff0c;这个时候可以试试《藏语翻译通》App的图片识别功能&#xff0c;支持拍照识别和图片识别&#xff0c;拍一拍就能提取藏文文字&#xff0c;并支持一键翻译和复制分享。 跟着小编的…

数据结构之双向链表(赋源码)

数据结构之双向链表(源码) 线性表 双向链表是线性表链式存储结构的一种&#xff0c;若对链式存储结构进行分类可以分为八种。 带头、不带头&#xff1a;指的是该连链表有无头节点&#xff0c;头节点不存放任何内容&#xff0c;它不一定是链表必备的元素&#xff0c;而一个链…

十五、【机器学习】【监督学习】- 神经网络回归

系列文章目录 第一章 【机器学习】初识机器学习 第二章 【机器学习】【监督学习】- 逻辑回归算法 (Logistic Regression) 第三章 【机器学习】【监督学习】- 支持向量机 (SVM) 第四章【机器学习】【监督学习】- K-近邻算法 (K-NN) 第五章【机器学习】【监督学习】- 决策树…

RPA鼠标按键使用技巧

RPA鼠标按键使用技巧 Mouse.MouseAuto.Action命令出错&#xff0c;调用的目标发生了异常&#xff0c;Exception in Mouse.Action元素不可用怎么解决 出现问题 1.想要实现的效果鼠标移动到录屏工具的小球上2.点击开始按钮开始录屏现象&#xff0c;鼠标没有移动痕迹&#xff0c…