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

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 pymongomongo = 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 pymongomongo = 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.mzph.cn/pingmian/32993.shtml

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

相关文章

系统架构师概述

引言 系统架构设计师是项目开发活动中的众多角色之一,它可以是一个小组或者一个人或者是一个团队,架构师包含建筑师,设计师,创造者,缔造者,可以说架构师就是我们社会各个领域的创造者和缔造者。从组织上划分…

15天搭建ETF量化交易系统Day9—玩大A必学网格策略

搭建过程 每个交易者都应该形成一套自己的交易系统。 很多交易者也清楚知道,搭建自己交易系统的重要性。现实中,从0到1往往是最难跨越的一步。 授人鱼不如授人以渔,为了帮助大家跨出搭建量化系统的第一步,我…

reflutter工具实践之--xx一番赏app

此文章已经录制b站视频: flutter逆向案例-某某一番赏_哔哩哔哩_bilibili 一、工具介绍--reFlutter 这个框架帮助 Flutter 应用逆向工程,使用 Flutter 库的补丁版本,该版本已经编译并准备好重新打包应用。此库修改了快照反序列化过程&#…

java周测总结(2)

1.什么是I0流. 是一串流动的字符从先进先出的方式发送信息的通道。 2.IO流共有多少种划分方式,分别都包含哪些流 三种 按流分 输出输入流 按处理单元分 字节和节符 按流的角色方 节点流和处理流 3.如何把字荐串交量str转换为字节数组,并且存入bytes数组当中 byt…

LeetCode665.非递减数列

LeetCode刷题记录 文章目录 📜题目描述💡解题思路⌨C代码 📜题目描述 给你一个长度为 n 的整数数组 nums ,请你判断在 最多 改变 1 个元素的情况下,该数组能否变成一个非递减数列。 我们是这样定义一个非递减数列的&am…

康奈尔大学之论文审稿模型Reviewer2及我司七月对其的实现(含PeerRead)

前言 自从我司于23年7月开始涉足论文审稿领域之后「截止到24年6月份,我司的七月论文审稿GPT已经迭代到了第五版,详见此文的8.1 七月论文审稿GPT(从第1版到第5版)」,在业界的影响力越来越大,所以身边朋友如发现业界有相似的工作&a…

QListView、QTableView或QTreeView截取滚动区域(截长图)

本文以QTreeView为例,理论上继承自QAbstractScrollArea的类都支持本文所述的方法。 一.效果 一共5个文件夹,每个文件文件夹下有5个文件,先把文件夹展开,然后截图。将滚动条拖到居中位置,是为了证明截图对滚动条无影响 下面是截的图 二.原理 将滚动区域的viewport设置为…

C语言 | Leetcode C语言题解之第174题地下城游戏

题目: 题解: int calculateMinimumHP(int** dungeon, int dungeonSize, int* dungeonColSize) {int n dungeonSize, m dungeonColSize[0];int dp[n 1][m 1];memset(dp, 0x3f, sizeof(dp));dp[n][m - 1] dp[n - 1][m] 1;for (int i n - 1; i >…

mechanize - 自动化与HTTP web服务器的交互操作

1、前言 随着自动化测试的普及与落地推广,出现了众多知名的自动化测试工具,如Selenium 、Robot Framework、Playwright等。本文将介绍一款在Python环境下的mechanize库,这个库能够模拟浏览器行为,支持发送HTTP请求、解析HTML页面和…

构建家庭NAS之二:TrueNAS Scale规划、安装与配置

首先声明一下,我用的版本是TrueNAS SCALE 24.04.1.1(目前的最新版本),其它版本的界面和操作方式或有不同。我安装使用过程中网上的一些教程里的操作方式和这个版本不一样,造成了一些困扰。 TrueNAS SCALE的最低硬件需…

Java面试八股之什么是mybatis流式查询

什么是mybatis流式查询 Mybatis流式查询是一种处理大量数据的有效方法,它允许你以低内存消耗的方式来处理查询结果。传统的查询操作会一次性将所有数据加载到内存中,如果数据量非常大,可能会导致OutOfMemoryError(OOM&#xff09…

基于matlab的SVR回归预测

1 原理 SVR(Support Vector Regression)回归预测原理,基于支持向量机(SVM)的回归分支,其核心思想是通过寻找一个最优的超平面来进行回归预测,并处理非线性回归问题。以下是SVR回归预测原理的系统…

ViT:4 Pruning

实时了解业内动态,论文是最好的桥梁,专栏精选论文重点解读热点论文,围绕着行业实践和工程量产。若在某个环节出现卡点,可以回到大模型必备腔调或者LLM背后的基础模型重新阅读。而最新科技(Mamba,xLSTM,KAN)…

文华财经T8自动化交易程序策略模型指标公式源码

文华财经T8自动化交易程序策略模型指标公式源码: //定义变量 //资金管理与仓位控制 8CS:INITMONEY;//初始资金 8QY:MONEYTOT;//实际权益 8QY1:MIN(MA(8QY,5*R),MA(8QY,2*R)); FXBL:N1; DBKS:8QY1*N1;//计算单笔允许亏损额度 BZDKS:MAX(AA-BB,N*1T)*UNIT; SZDKS:MAX…

北方银行 - HDFS 现代化快速案例研究

故事很重要,客户故事是最好的。他们提供令人瞠目结舌的统计数据或克服巨大障碍的那些是获得最佳头条新闻的那些。它们也是最难发表的。我们知道,因为我们将与您分享一些我们正在孜孜不倦地努力出版的内容 - 但现在它们将保持匿名。话虽如此,如…

爬取同样内容,xpath方法会比bs4要慢很多吗?

点击上方“Python爬虫与数据挖掘”,进行关注 回复“书籍”即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 红豆生南国,春来发几枝。 大家好,我是Python进阶者。 一、前言 前几天在Python白银交流群【沐子山树】问了一个Python网络爬虫的…

ARM32开发--WDGT看门狗

知不足而奋进 望远山而前行 目录 文章目录 前言 目标 内容 什么是看门狗 ARM中的看门狗 独立看门狗定时器 窗口看门狗定时器 独立看门狗FWDGT 初始化配置 喂狗 完整代码 窗口看门狗WWDGT 初始化配置 喂狗 完整代码 注意 总结 前言 嵌入式系统在如今的科技发…

JSON序列化与反序列化

目录 JSON序列化 查看JSON文件,设置数据模板类 ​编辑 Newtonsoft.Json下载 运行结果展示 JSON反序列化 序列化是将对象或数据结构转换为可以存储或传输的格式(如JSON字符串)的过程,而反序列化则是将这个格式的数据转换回原…

Web渗透:文件上传-后端过滤

在上一篇文件上传的内容中笔者阐述了文件上传漏洞产生的相关原理以及使用了一个pikachu靶场的例子进行演示,在这个例子中涉及到了前端代码对于文件上传漏洞的相关防护,以及站在攻击者的角度我们要如何绕过前端的防护成功进行攻击;但是事实上对…

很冷门但真的有趣的IOS应用

Tuesday Tuesday纪念日小组件是一款功能丰富的倒数日和桌面小组件工具APP。此外,Tuesday软件还具有超萌小清新的风格,界面设计清新可爱,适合各种场景使用。用户可以通过小组件实现各种趣味功能,满足不同心情需求。 SideNotes Si…