【Python|第40期】Python操作MongoDB

news2025/2/3 15:40:36

日期:2023年8月28日
作者:Commas
签名:(ง •_•)ง 积跬步以致千里,积小流以成江海……
注释:如果您觉得有所帮助,帮忙点个赞,也可以关注我,我们一起成长;如果有不对的地方,还望各位大佬不吝赐教,谢谢^ - ^
1.01365 = 37.7834;0.99365 = 0.0255
1.02365 = 1377.4083;0.98365 = 0.0006


文章目录

  • 一、前言
  • 二、安装MongoDB驱动程序
  • 三、连接到MongoDB数据库
  • 四、选择数据库和集合
  • 五、插入数据
  • 六、查询数据
  • 七、更新数据
  • 八、删除数据
  • 九、断开连接
  • 十、结束语


在这里插入图片描述


一、前言

MongoDB 是一个流行的 NoSQL 数据库,以其半结构化文档存储方式而闻名。Python开发人员经常使用MongoDB来存储和处理各种类型的数据。本文将带你逐步了解如何使用Python与MongoDB进行交互,从连接到基本操作。

二、安装MongoDB驱动程序

安装了MongoDB的Python驱动程序pymongo

pip install pymongo

三、连接到MongoDB数据库

首先,确保MongoDB服务器正在运行。

接着,我们再连接到MongoDB数据库。使用pymongo 库的 MongoClient 类来建立连接:

try:
    client = MongoClient('mongodb://localhost:27017/')
    print("数据库连接成功")
except Exception as e:
    print("数据库连接失败,原因:", e)

可以根据你的服务器配置修改连接字符串,如下所示:

# 配置连接信息
host = 'localhost'
port = 27017
username = '<YourUsername>'
password = '<YourPassword>'
auth_source = 'admin'  # 认证数据库,默认是'admin',可以根据实际情况修改

# 尝试连接到MongoDB
try:
    client = MongoClient(host, port,
                         username=username,
                         password=password,
                         authSource=auth_source)
    print("数据库连接成功")
except Exception as e:
    print("数据库连接失败,原因:", e)

四、选择数据库和集合

在MongoDB中,数据存储在数据库中,每个数据库可以包含多个集合(类似于表)。我们将创建一个名为 mydatabase 的数据库和一个名为customers 的集合:

# 创建数据库(如果不存在)
mydb = client["mydatabase"]
print(mydb)

# 创建集合
mycol = mydb["customers"]
print(mycol)

输出结果:

Database(MongoClient(host=['localhost:27017'], document_class=dict, tz_aware=False, connect=True), 'mydatabase')
Collection(Database(MongoClient(host=['localhost:27017'], document_class=dict, tz_aware=False, connect=True), 'mydatabase'), 'customers')

五、插入数据

我们可以使用 insert_one()insert_many() 方法向集合中插入数据:

# 插入一条数据
data = {
    "name": "Commas",
    "email": "commas@example.com"
}
insert_result = mycol.insert_one(data)
print("Inserted ID:", insert_result.inserted_id)

# 插入多条数据
data_list = [    {"name": "CommasKM", "email": "commaskm@example.com"},
    {"name": "Kang", "email": "kang@example.com"},
    {"name": "Robert", "email": "Robert@example.com"}
]
insert_many_result = mycol.insert_many(data_list)
print("Inserted IDs:", insert_many_result.inserted_ids)

输出结果:

Inserted ID: 64eb1f52561652f6ae007e52
Inserted IDs: [ObjectId('64eb1f52561652f6ae007e53'), ObjectId('64eb1f52561652f6ae007e54'), ObjectId('64eb1f52561652f6ae007e55')]

六、查询数据

查询是从集合中检索数据的关键操作,使用 find() 方法可以查询集合中的数据。以下是两种常见的查询方法:

  • 查询所有文档:
# 查询所有文档
all_documents = mycol.find()
print(all_documents)
for document in all_documents:
    print(document)

在这里插入图片描述

输出结果:

<pymongo.cursor.Cursor object at 0x0000025299BEF910>
{'_id': ObjectId('64eb20d6bdc391e33532bda9'), 'name': 'Commas', 'email': 'commas@example.com'}
{'_id': ObjectId('64eb20d6bdc391e33532bdaa'), 'name': 'CommasKM', 'email': 'commaskm@example.com'}
{'_id': ObjectId('64eb20d6bdc391e33532bdab'), 'name': 'Kang', 'email': 'kang@example.com'}
{'_id': ObjectId('64eb20d6bdc391e33532bdac'), 'name': 'Robert', 'email': 'Robert@example.com'}
  • 查询满足条件的文档:
# 查询满足条件的文档
specific_documents = mycol.find({"name": "Commas"})
print(specific_documents)
for document in specific_documents:
    print(document)

在这里插入图片描述

输出结果:

<pymongo.cursor.Cursor object at 0x00000252974F16D0>
{'_id': ObjectId('64eb20d6bdc391e33532bda9'), 'name': 'Commas', 'email': 'commas@example.com'}

七、更新数据

要更新数据,可以使用 update_one()update_many() 方法:

# 更新数据
update_query = {"name": "John"}
new_values = {"$set": {"email": "john.new@example.com"}}
mycol.update_one(update_query, new_values)

八、删除数据

要删除数据,可以使用 delete_one()delete_many() 方法:

# 删除数据
delete_query = {"name": "Alice"}
mycol.delete_one(delete_query)

九、断开连接

在操作完成后,别忘了断开与数据库的连接:

client.close()

十、结束语

这篇文章介绍了如何使用Python的PyMongo库连接到MongoDB,并执行插入、查询、更新和删除操作。

希望这篇文章对你有所帮助,如果有任何问题或意见,请随时留言。谢谢阅读!


我的微信公众号【会飞的小猴子】,等你来关注哦 ^ - ^


参考文章:

  • PyMongo官方文档
  • MongoDB教程
  • Real Python教程

版权声明:本文为博主原创文章,如需转载,请给出:
原文链接:https://blog.csdn.net/qq_35844043/article/details/132521237

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

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

相关文章

一步一步实验,讲解python中模块和包的使用

背景 为什么要提出这个问题&#xff1f; 在一个项目中&#xff0c;每一个python文件打开后&#xff0c;都会看到依赖了其他的一些包、模块等&#xff1b;概念混乱&#xff0c;魔改目标不清晰 为什么要修改&#xff1f; 如果需要将某开源包进行自定义处理&#xff0c;不再使…

AI智慧,书香飘溢|在图书馆的世界,知识与未来交汇!

“如果有天堂&#xff0c;天堂应该是图书馆的模样。”阿根廷国家图书馆前馆长、著名作家博尔赫斯如此形容图书馆。人类文明的演进与传承&#xff0c;倚仗于知识的积累&#xff0c;而知识的载体往往绕不开书籍&#xff0c;其集散地——图书馆&#xff0c;更是在这一过程扮演着极…

【精算研究01/10】 计量经济学的性质和范围

一、说明 计量经济学是使用统计方法来发展理论或测试经济学或金融学中的现有假设。计量经济学依赖于回归模型和零假设检验等技术。计量经济学也可以用来预测未来的经济或金融趋势。 图片来源&#xff1a;https://marketbusinessnews.com 二、 计量经济之简介 计量经济学是对经济…

javacv基础02-调用本机摄像头并预览摄像头图像画面视频

引入架包&#xff1a; <dependency><groupId>org.openpnp</groupId><artifactId>opencv</artifactId><version>4.5.5-1</version></dependency><dependency><groupId>org.bytedeco</groupId><artifactId…

【校招VIP】算法考点之堆排

考点介绍&#xff1a; 排序算法属于数据结构和算法的基础内容&#xff0c;并且也是大厂笔试中的高频考点。 堆排序是使用一棵树存储序列这个课树只保证跟节点是这棵树中的最小值&#xff0c;但并不保证其他节点是按顺序的。因此他的排序是每次从堆中取得堆顶&#xff0c;取得 n…

Qt Scroll Area控件设置,解决无法显示全部内容,且无法滚动显示问题。

前言&#xff0c;因为要显示很多条目的内容&#xff0c;原来是用Vertical Layout控件里面嵌套Horizontal layout显示了很多行控件&#xff0c;发现最简单的方法就是使用滚动条控件&#xff0c;但是无论如何调整需要滚动的控件高度&#xff0c;始终无法滚动显示内容。也就是说添…

5. 线性层及其他层

5.1 神经网络结构 5.2 线性拉平 import torch import torchvision from torch import nn from torch.nn import ReLU from torch.nn import Sigmoid from torch.utils.data import DataLoader from torch.utils.tensorboard import SummaryWriterdataset torchvision.datase…

ant-vue1.78版监听a-modal遮罩层的滚动事件

监听a-modal遮罩层的滚动事件 我们开发过程中经常有遇到监听页面滚动的事件需求&#xff0c;去做一些下拉加载或者是下拉分页的需求&#xff0c;我们直接在vue的生命周期中去绑定事件监听非常的方便&#xff0c;但如果是弹框的遮罩层的滚动监听呢&#xff1f;页面的监听完全是…

Stone Prover:StarkWare的STARK Prover

1. 引言 StarkWare将基于Apache 2.0 license&#xff0c;开源其以C编写的STARK Prover&#xff0c;名为Stone&#xff08;STARK one&#xff09;。 其基本流程为&#xff1a; 1&#xff09;编写Cairo0程序。2&#xff09;使用Cairo工具 将Cairo0程序编译为CASM。3&#xff…

数据结构:八种数据结构大全

数据结构 1.1 数据结构概述 数据结构是计算机存储、组织数据的方式&#xff1b;通常情况下&#xff0c;精心选择的数据结构可以带来更高的运行或者存储效率。数据结构的优良将直接影响着我们程序的性能&#xff1b;常用的数据结构有&#xff1a;数组&#xff08;Array&#xff…

K8S Nginx Ingress实现金丝雀发布

通过给 Ingress 资源指定 Nginx Ingress 所支持的 annotation 可实现金丝雀发布。 需给服务创建2个 Ingress&#xff0c;其中1个常规 Ingress&#xff0c;另1个为带 nginx.ingress.kubernetes.io/canary: "true" 固定的 annotation 的 Ingress&#xff0c;称为 Cana…

浅谈Lua协程和函数的尾调用

前言 虽然不经常用到协程&#xff0c;但是也不能谈虎色变。同时&#xff0c;在有些场景&#xff0c;协程会起到一种不可比拟的作用。所以&#xff0c;了解它&#xff0c;对于一些功能&#xff0c;也会有独特的思路和想法。 协程 概念 关于进程和线程的概念就不多说。 那么…

这所985专业课均分130!复试笔试很难!淘汰率很高!

一、学校及专业介绍 东南大学坐落于六朝古都南京&#xff0c;是享誉海内外的著名高等学府。学校是国家教育部直属并与江苏省共建的全国重点大学&#xff0c;是国家“双一流”、“985工程”、“211工程”重点建设高校。2017年&#xff0c;东南大学入选世界一流大学建设名单。 …

字符集(Latin1,GBK,utf8,utf8mb4)

Latin1 1个字符占一个字节GBK 1个字符占两个字节utf8utfmb3 1个字节占三个字节utf8mb4 1个字符占四个字节

OLED透明屏高清:什么是OLED透明屏?未来显示技术的巅峰之作

在现代科技快速发展的时代&#xff0c;高清显示已经成为人们对于视觉体验的基本要求。 而OLED透明屏作为一种先进的显示技术&#xff0c;以其出色的高清显示效果和透明度&#xff0c;正逐渐成为未来显示技术的巅峰之作。 一、什么是OLED透明屏 OLED透明屏采用有机发光二极管技…

Zabbix下载安装及SNMP Get使用

帮助文档&#xff1a;6. Zabbix Appliance 一、zabbix下载安装 1、获取Zabbix Appliance镜像 Download Zabbix appliance 2、使用该镜像创建虚拟机 3、打开虚拟机控制台自动安装&#xff0c;等待安装完成即可 默认配置 系统/数据库&#xff1a;root:zabbix Zabbix 前端&am…

javacv基础01-HelloWorld

JavaCV是一个针对Java编程语言的开源计算机视觉和机器学习库。它为各种流行的计算机视觉和图像处理库&#xff08;如OpenCV、FFmpeg等&#xff09;提供了Java包装&#xff0c;使Java开发人员能够在其Java应用程序中访问这些库的功能&#xff0c;无需编写本地代码。 JavaCV提供…

SpringBoot Mybatis 多数据源 MySQL+Oracle

一、背景 在SpringBoot Mybatis 项目中&#xff0c;需要连接 多个数据源&#xff0c;连接多个数据库&#xff0c;需要连接一个MySQL数据库和一个Oracle数据库 二、依赖 pom.xml <dependencies><dependency><groupId>org.springframework.boot</groupId&…

(Deep Learning)准确率和召回率的基础概念

算法模型极大的提升了对各类结果的预测效率。 【算法模型的本质】 算法模型的本质&#xff0c;是基于输入的各类变量因子&#xff0c;通过计算规则&#xff08;模型or公式&#xff09;&#xff0c;得出预测结果。 典型的预测结果比如&#xff1a; 1.&#xff08;通过历史行为…

天地图开发指南

1、 申请天地图key 1.1注册账号 注册地址&#xff1a;https://uums.tianditu.gov.cn/register 1.2 申请开发者 登录后 &#xff0c;申请开发者https://console.tianditu.gov.cn/api/register 1.3 创建应用 点击控制台&#xff0c;创建应用 1.4 天地图key 2、天地图api使用 2.…