13.爬虫---PyMongo安装与使用

news2025/2/25 6:21:25

13.PyMongo安装与使用

    • 1.安装 PyMongo
    • 2.使用PyMongo
      • 2.1连接数据库和集合
      • 2.2增加数据
      • 2.3修改数据
      • 2.4查询数据
      • 2.5删除数据
    • 3.总结

MongoDB 安装可以看这篇文章MongoDB安装配置教程(详细版)

1.安装 PyMongo

PyMongo 是Python中用于连接MongoDB数据库的库,安装起来非常简单。通常情况下,只需要在命令行中执行以下命令即可:

pip install PyMongo

如果你使用的是Python 3,可能需要使用pip3来安装:

pip3 install PyMongo

2.使用PyMongo

使用 PyMongo 连接 MongoDB 的第一步是创建一个 MongoClient 对象。可以通过以下方式创建连接

2.1连接数据库和集合

import pymongo

mongo = pymongo.MongoClient('localhost', 27017)
# 选择数据库
db = mongo.test
print(db)
col = db.table
print(col)

在这里插入图片描述

执行结果:

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

2.2增加数据

插入文档可以使用 insert_one()insert_many() 方法

1.insert_one() 添加一个

# 添加
import pymongo

mongo = pymongo.MongoClient('localhost', 27017)
# 选择数据库
db = mongo.test
col = db.table
col.insert_one({"name": "John",'age':23}) #添加一个

执行结果:
在这里插入图片描述

2.insert_many() 添加一些

col.insert_many([{"name": "John",'age':23},{"name": "Jane",'age':24},{"name": "bob",'age':25}])

执行结果:
在这里插入图片描述

2.3修改数据

常见参数包括:

  • filter:定义了更新条件的查询对象。
  • update:包含了更新内容的对象,通常使用 $set 操作符来更新字段。
  • **kwargs:可选参数,如 upsert (在未找到匹配文档时的插入行为) 等。

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

1.update_one() 更新一个,我们更新 name=John 的 age=30

# 修改
col.update_one({"name": "John"}, {"$set": {"age": 30}})

执行结果:
在这里插入图片描述
2.update_many() 更新一些 我们更新 name=John 的 age=31

# 修改
col.update_many()({"name": "John"}, {"$set": {"age": 30}})

执行结果:
在这里插入图片描述

2.4查询数据

常见参数包括:

  • filter: 查询条件,用于指定要检索的文档。
  • projection: 投影条件,用于指定要返回的字段。
  • sort: 排序条件,用于指定返回文档的排序方式。
  • skip: 跳过的文档数量。
  • limit: 返回文档的最大数量。
  • batch_size: 每次从服务器读取的文档数量。
  • max_time_ms: 查询的最大执行时间(毫秒)。

1.查询所有

results = col.find()

执行结果:

{'_id': ObjectId('6677b7d499f1e427419c2d07'), 'name': 'John', 'age': 31}
{'_id': ObjectId('6677b91125406ce9b6fae3ea'), 'name': 'John', 'age': 31}
{'_id': ObjectId('6677b91125406ce9b6fae3eb'), 'name': 'Jane', 'age': 24}
{'_id': ObjectId('6677b91125406ce9b6fae3ec'), 'name': 'bob', 'age': 25}

2.查询 name = bob 的数据

result = col.find({'name':'bob'})
print(list(result))

执行结果:

[{'_id': ObjectId('6677b91125406ce9b6fae3ec'), 'name': 'bob', 'age': 25}]

3.使用 $gt 运算符来查询年龄大于20岁的学生,并指定返回结果中包含的字段。同时,我们指定了排序和跳过的文档数量,以及限制返回文档的数量

results = col.find({"age": {"$gt": 20}}, {"_id": 0, "name": 1, "age": 1}).sort("age", pymongo.ASCENDING).skip(1).limit(3)

执行结果:

{'name': 'bob', 'age': 25}
{'name': 'John', 'age': 31}
{'name': 'John', 'age': 31}

在这里插入图片描述

2.5删除数据

PyMongo 提供了 delete_one() delete_many() 方法来删除 MongoDB 集合中的文档

1.delete_one() 删除 name = bob 的 数据

results = col.delete_one({'name': 'bob'})
print(results)

执行结果:

DeleteResult({'n': 1, 'ok': 1.0}, acknowledged=True)

在这里插入图片描述
2.delete_many() 删除 name = John 的 数据

results = col.delete_many()({'name': 'John'})
print(results)

执行结果:

DeleteResult({'n': 2, 'ok': 1.0}, acknowledged=True)

在这里插入图片描述

3.总结

PyMongo 为 Python 程序员提供了一个强大且易于使用的 MongoDB 接口。通过上述教程,你可以学会如何安装 PyMongo、连接 MongoDB、创建数据库和集合、插入和查询文档、更新和删除数据,以及如何对结果进行排序、跳过和限制。这些操作构成了与 MongoDB 数据库交互的基础。

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

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

相关文章

win32API(CONSOLE 相关接口详解)

前言: Windows这个多作业系统除了协调应⽤程序的执⾏、分配内存、管理资源之外,它同时也是⼀个很⼤的服务中⼼,调⽤这个服务中⼼的各种服务(每⼀种服务就是⼀个函数),可以帮应⽤程式达到开启视窗、描绘图形…

Linux使用——查看发行版本、内核、shell类型等基本命令

先做快照 虚拟机中编辑网络 关机 普通账户和管理员账户 互相对照 localhost相当于IP 参数: 短格式:以减号(-)开头,参数字母 长格式:以2个减号(--)后跟上完整的参数单词 当前发行版本 [rootserver ~]# cat /etc/redhat-release Red Hat Enterprise Linux release 9.…

区块链技术原理

1.起源: ➢ 中本聪(Satoshi Nakamoto), 2008 ➢ 比特币:一种点对点的电子现金系统 2.分布式账本技术原理 ➢ 将交易向全网所有节点进行广播 ➢ 众多记账节点对记账权达成共识,由共识确认的记账节点把记账区块发布给全网 ➢ 所有账本数据完整存储于区块…

ADD属性驱动架构设计(一)

目录 一、架构设计过程 1.1、架构设计过程 1.1.1、设计目的 1.1.2、质量属性(非功能需求) 1.1.3、核心功能(功能需求) 1.1.4、架构关注 1.1.5、约束条件 1.2、基于设计过程 二、什么是ADD? 三、为什么选择ADD? 四、作…

OpenGL3.3_C++_Windows(18)

接口块: glsl彼此传输数据,通过in / out,当更多的变量,涉及数组和结构体接口块(Interface Block)类似struct,in / out 块名{……}实例名 Uniform缓冲对象: 首先理解uniform Object:负责向gl…

RTSP协议分析与安全实践

RTSP协议,全称实时流协议(Real Time Streaming Protocol),前文已经简单介绍了RTSP相关协议; RTSP和RTP(RTCP) 这里再提一下RTSP和RTP/RTCP、RSVP的关系;如图: RTSP和HTTP 相似性:RTSP和HTTP协议都使用纯…

Android13 WMS窗口层级树

1,认识层级树 可以通过dumpsys activity containers 看到 WMS 层级树的结构 ACTIVITY MANAGER CONTAINERS (dumpsys activity containers) ROOT typeundefined modefullscreen override-modeundefined requested-bounds[0,0][0,0] bounds[0,0][1440,2960]#0 Displa…

【驱动篇】龙芯LS2K0300之单总线驱动

实验过程 实验目的: 在龙芯开发板上面使用单总线驱动DS18B20温度传感器 ① 根据原理图连接DS18B20模块 ② 将i2c0引脚的功能复用为GPIO ③ 注册字符设备,按照DS18B20的读写时序编写读写驱动接口 ④ 编写测试用例解析传感器的数值 原理图 将板子上…

细粒度图像分类论文阅读笔记

细粒度图像分类论文阅读笔记 摘要Abstract1. 用于细粒度图像分类的聚合注意力模块1.1 文献摘要1.2 研究背景1.3 本文创新点1.4 计算机视觉中的注意力机制1.5 模型方法1.5.1 聚合注意力模块1.5.2 通道注意力模块通道注意力代码实现 1.5.3 空间注意力模块空间注意力代码实现 1.5.…

[MQTT]Mosquitto的權限管理_使用者/密碼(pwfile)和訪問控制清單(aclfile)

延續Mosquitto的內網連接(intranet)和使用者/密碼權限設置文章,經解讀mosquitto官網文檔,在權限管理部分,除了設置使用者/密碼(pwfile)之外,還有訪問控制清單(Access Control List, aclfile)可以設置。經過測試,同時設…

Python中使用PyQT5库时报错:没有Qt平台插件可以初始化

一、发现问题:无限易pythonGo打开执行的时候报:“没有Qt平台插件可以初始化,请重新安装应用程序。”的错误,点击确定后无限易崩溃闪退。 二、解决问题: 1、重新安装依赖,打开CMD输入pip list,查…

开发uniapp插件包aar文件,使uniapp可以调用jar包

背景 使用 uniapp 开发应用时,很多时候都需要调用第三方的sdk,一般以 jar 为主。为了应对这个问题,官方提供了插件方案,可以将第三方 jar 包进行封装为 aar 包后,再集成到 uniapp 中使用。 一、环境安装工具 1、jdk…

拓扑排序——C语言

拓扑排序(Topological Sorting)是一种用于有向无环图(DAG)的排序算法,其输出是图中所有顶点的线性排序,使得对于每条有向边 (u, v),顶点 u 在 v 之前出现。拓扑排序确定了项目网络图中的起始事件…

嵌入式中逻辑分析仪与示波器的基本原理

大家好,今天主要给大家分享一下,嵌入式中如何使用逻辑分析仪和示波器的方法,希望对大家有所帮助。 https://dreamsourcelab.cn/ 第一:什么是逻辑分析仪 是否遇到使用示波器分析数字电路的冏境:深度不够,时间太短,无法抓到想要的波形,没有协议内容解析? 逻辑分析仪…

深度学习11-13

1.神经元的个数对结果的影响: (http://cs.stanford.edu/people/karpathy/convnetjs/demo/classify2d.html) (1)神经元3个的时候 (2)神经元是10个的时候 神经元个数越多,可能会产生…

注意 llamaIndex 中 Chroma 的坑!

llamaIndex 做索引是默认存在内存中,由于索引需要通过网络调用 API,而且索引是比较耗时的操作,为了避免每次都进行索引,使用向量数据库进行 Embedding 存储以提高效率。首先将 Document 解析成 Node,索引时调用 Embedd…

解析PDF文件中的图片为文本

解析PDF文件中的图片为文本 1 介绍 解析PDF文件中的图片,由两种思路,一种是自己读取PDF文件中的图片,然后用OCR解析,例如:使用PyMuPDF读取pdf文件,再用PaddleOCR或者Tesseract-OCR识别文字。另一种使用第…

小鹏汽车2025冲刺类L4智驾,挑战与机遇并存

随着科技的飞速发展,智能驾驶已成为汽车行业的前沿领域。近日,小鹏汽车在AI DAY上宣布国内首个量产上车的端到端大模型,这一创新举措无疑为智能驾驶的发展注入了新的活力。然而,在迈向2025年实现类L4级智能驾驶的道路上&#xff0…

DHCP原理1-单个局域网出现多个DHCP服务器会发生什么

1. 背景 DHCP全称是Dynamic Host Configuration Protocol。其协议标准是RFC1541(已被RFC2131取代),主要实现服务器向客户端动态分配IP地址(如IP地址、子网掩码、网关、DNS)和配置信息。其系统架构是标准的C/S架构。RFC…

运算放大器(运放)低通滤波反相放大器电路和积分器电路

低通滤波反相放大器电路 运放积分器电路请访问下行链接 运算放大器(运放)积分器电路 设计目标 输入ViMin输入ViMax输出VoMin输出VoMaxBW:fp电源Vee电源Vcc–0.1V0.1V–2V2V2kHz–2.5V2.5V 设计说明 这款可调式低通反相放大器电路可将信号电平放大 26dB 或 20V/…