Python爬虫之使用MongoDB存储数据

news/2025/1/31 13:07:38/

MongoDB是一种基于文档的(Document-Oriented)NoSQL数据库,它设计简单、易于使用,适用于大多数应用程序开发需求。与传统的关系型数据库不同,MongoDB不需要一个明确定义的模式来存储数据,这意味着可以轻松存储包含不同类型和结构的数据。

在Python中使用MongoDB存储数据是非常简单的,Python中有很多优秀的MongoDB驱动库可以选择,本文将介绍如何使用pymongo驱动库来实现数据存储。

1.安装pymongo

在使用pymongo之前,需要先进行安装。使用pip命令可以快速安装pymongo,如下所示:

pip install pymongo

2.连接MongoDB数据库

连接MongoDB数据库非常简单,只需指定MongoDB数据库的地址和端口号即可,如下所示:

import pymongoclient = pymongo.MongoClient("mongodb://localhost:27017/")

上面的代码通过pymongo驱动库创建一个MongoDB客户端,连接本地的MongoDB数据库,默认端口号为27017。

3.创建数据库和集合

在MongoDB中,数据以文档的形式存储在集合(Collection)中,集合是MongoDB中的一种无结构化的数据结构,类似于关系型数据库中的表。

要创建一个数据库和集合,可以使用以下代码:

import pymongoclient = pymongo.MongoClient("mongodb://localhost:27017/")# 创建数据库
mydb = client["testdb"]# 创建集合
mycol = mydb["testcol"]

在这个例子中,数据库名为“testdb”,集合名为“testcol”。

4.插入数据

要向MongoDB中插入数据,可以使用insert_one()和insert_many()方法。insert_one()方法插入一条数据,insert_many()方法插入多条数据。

import pymongoclient = pymongo.MongoClient("mongodb://localhost:27017/")mydb = client["testdb"]
mycol = mydb["testcol"]# 插入一条数据
mydict = { "name": "John", "address": "Highway 37" }
x = mycol.insert_one(mydict)# 插入多条数据
mylist = [{ "name": "Amy", "address": "Apple st 652" },{ "name": "Hannah", "address": "Mountain 21" },{ "name": "Michael", "address": "Valley 345" },{ "name": "Sandy", "address": "Ocean blvd 2" },{ "name": "Betty", "address": "Green Grass 1" },{ "name": "Richard", "address": "Sky st 331" },{ "name": "Susan", "address": "One way 98" },{ "name": "Vicky", "address": "Yellow Garden 2" },{ "name": "Ben", "address": "Park Lane 38" },{ "name": "William", "address": "Central st 954" },{ "name": "Chuck", "address": "Main Road 989" },{ "name": "Viola", "address": "Sideway 1633"}
]x = mycol.insert_many(mylist)

5.查询数据

使用find()方法来查询MongoDB中的数据。find()方法可以接受查询条件作为参数,如果没有查询条件,则返回集合中的所有文档。

import pymongoclient = pymongo.MongoClient("mongodb://localhost:27017/")mydb = client["testdb"]
mycol = mydb["testcol"]# 查询所有数据
for x in mycol.find():print(x)# 查询name为John的数据
myquery = { "name": "John" }
mydoc = mycol.find(myquery)
for x in mydoc:print(x)

在上面的代码中,第一个for循环查询了集合中的所有文档,第二个for循环查询了符合条件的文档。

6.更新数据

使用update_one()方法或update_many()方法来更新MongoDB中的数据。

import pymongoclient = pymongo.MongoClient(“mongodb://localhost:27017/”)mydb = client[“testdb”]
mycol = mydb[“testcol”]

更新一条数据

myquery = { “name”: “John” }
newvalues = { “$set”: { “address”: “Canyon 123” } }
mycol.update_one(myquery, newvalues)

更新多条数据 

myquery = { “address”: { “regex": "^S" } } newvalues = { "set”: { “name”: “Minnie” } }
x = mycol.update_many(myquery, newvalues)print(x.modified_count, “文档已修改”)


7.删除数据

使用delete_one()方法或delete_many()方法来删除MongoDB中的数据。

import pymongoclient = pymongo.MongoClient("mongodb://localhost:27017/")mydb = client["testdb"]
mycol = mydb["testcol"]# 删除一条数据
myquery = { "address": "Mountain 21" }
mycol.delete_one(myquery)# 删除多条数据
myquery = { "name": {"$regex": "^S"} }
x = mycol.delete_many(myquery)print(x.deleted_count, "文档已删除")

总结:

在Python中使用MongoDB存储数据非常方便,只需安装pymongo驱动库即可。通过连接MongoDB数据库、创建数据库和集合、插入、查询、更新和删除数据等基本操作,可以轻松实现数据的存储和管理。本文仅是入门介绍,希望能够对初学者有所帮助。


http://www.ppmy.cn/news/84843.html

相关文章

基于OpenCV的haar分类器实现人脸检测分析

基于OpenCV的haar分类器实现人脸检测分析 文章目录 基于OpenCV的haar分类器实现人脸检测分析一、基于OpenCV的haar分类器实现笑脸检测1、Haar分类器介绍2、haar分类器的静态使用(处理图片)3、haar分类器的动态使用(对摄像头视频进行处理&…

开放式耳机是什么意思?2023年开放式耳机推荐指南

开放式耳机,就是开放耳朵不需要塞入耳道的一种耳机。 这种耳机包括气传导和骨传导两种类型。气传导耳机采用波束成形技术进行定向传音,将音频传送到耳朵,其所采用的空气传导原理在发声的时候不会引起振动。 而骨传导耳机则是通过震动颅骨来…

甘特图控件DHTMLX Gantt教程:用PHP:Laravel实现Gantt(上)

DHTMLX Gantt是用于跨浏览器和跨平台应用程序的功能齐全的Gantt图表。可满足项目管理应用程序的大部分开发需求,具备完善的甘特图图表库,功能强大,价格便宜,提供丰富而灵活的JavaScript API接口,与各种服务器端技术&am…

CDN 回源与CDN 多级缓存原理

一、什么是回源 回源是指浏览器在发送请求报文时,响应该请求报文的是源站点的服务器,而不是各节点上的缓存服务器(比如Nginx开启缓存),那么这个过程相对于通过各节点上的缓存服务器来响应的话就称作为回源。回源的请求…

拥有自我意识的AI:AutoGPT | 得物技术

1.引言 ChatGPT在当下已经风靡一时,作为自然语言处理模型的佼佼者,ChatGPT的优势在于其能够生成流畅、连贯的对话,同时还能够理解上下文并根据上下文进行回答。针对不同的应用场景可以进行快速定制,例如,在客服、教育…

前端大文件断点续传

昨天整理了前端实现大文件上传通过文件切片进行处理,今天继续拓展进行断点续传 原理 断点续传的原理在于前端/服务端需要记住已上传的切片,这样下次上传就可以跳过之前已上传的部分,有两种方案实现记忆的功能 前端使用 localStorage 记录已…

无领导群面中,有哪些评分标准?(二)

群面是在竞选者较多的情况下,有效筛选人才的方式。因此能否在无领导群面中表现突出,对面试结果有较大影响。今天小编就接着来给大家说说无领导群面中评分标准,从如信银行考试中心了解到: 一、逻辑、分析能力如何? 面试…

多模态方法(更新中)

待coding: moco pcl 文章目录 Semantic Representation for Dialogue ModelingPCL: Peer-Contrastive Learning with Diverse Augmentations for Unsupervised Sentence Embeddings深度网络的公理归因 Axiomatic Attribution for Deep NetworksNLU模型的捷径学习行…