当前位置: 首页 > news >正文

Python操作MongoDB

一、Python链接MongoDB

1、安装pymongo包

使用包管理器安装

pip3 insatll pymongo

2、连接MongoDB

首先需要导入pymongo包:

from pymongo import MongoClient

创建MongoClient对象:

from pymongo import MongoClient
#创建MongoClient对象,该对象用于连接MongoDB数据服务器
client = MongoClient('mongodb://admin:admin123456@localhost:27017/')

此时这个client对象就可以对MongoDB库进行操作

但是当文件多时,需要每个文件都创建一次client对象比较麻烦,所以我们可以将client作为一个全局变量放置在一个单独的文件中,专门用于链接数据库。

例如,我创建一个名为mongo_db.py的文件,那么在其他文件我想获得这个变量,只需要引入这个mongo_db.py文件即可。


二、对数据的具体操作

对数据的增删改查操作在MongoDB中有的方法Python中几乎都有,用法也是打点调用,但是在MongoDB中的方法命名使用是小驼峰,而Python中对应方法的名字单词间都以下划线分隔。例如:insertMany在Python中是:insert_many。

目前测试处不同的:Python操作MongoDB中没有insert方法,将remove方法替换成delete方法。

案例:

分页查询,查询前两个student记录:

from pymongo import MongoClient
client = MongoClient('mongodb://用户名:密码@localhost:27017/')
students=client.school.student.find().skip(1).limit(2)

skip代表从第一条记录开始,limit代表查询两条记录。如果你想输出对应信息,你可以以关键字形式访问:

    for stu in students:print(stu["_id"],stu["name"])

由于查询出是两条记录,使用的是find方法,所以返回列表。我们需要迭代进行访问。如果想输出id值,由于MongoDB的id是ObjectId类型,所以访问时,要加上_在前边访问。

三、GridFS

GridFS是MongoDB的一个子模块,它提供了一种规范,用于在MongoDB中存储和检索大型文件(如图像、音频、视频等)。

1、利用graidfs向MongoDB中存放文件

案例:

from mongo_db import client
from gridfs import GridFS
try:db=client.schoolgfs=GridFS(db,collection="book")file=open("D:/Data/Linux就该这么学.pdf","rb")args={"type":"PDF","keyword":"Linux"}gfs.put(file,filename="Linux就该这么学.pdf",**args)file.close()
except Exception as e:print(e)

client是我们写好的链接MongoDB数据库的文件,可以直接使用。gfs=GridFS(db,collection="book")代表将数据集book返回给gfs,如果没有该数据集将创建。然后以二进制只读方式读取PDF文件。创建了一个args字典对象,内部有两个键值对。gfs.put(file,filename="Linux就该这么学.pdf",**args)是向book数据集中存放了file文件,还有filename,和**args,**代表可以解构的参数,也就是可以自动将键名作为MongoDB的键名。对应存储。

存放文件后,MongoDB数据库中将多出两个数据集。:

  1. chunks集合:用于存储文件内容的二进制数据。每个块由chunks集合中的一个文档表示,该文档包含块的唯一标识符、所属文件的标识符、块的序列号和块的数据等内容。
  2. files集合:用于存储文件的元数据。每个文件在files集合中都有一个对应的文档,该文档包含文件的唯一标识符、文件名、上传时间、文件大小、文件的MIME类型等元数据。

chunks存储的是文件的内容,而files集合存储的是一些文件信息。

 2、获取文件中的信息

比如要获得文件的名字(filename),可以直接打点调用,例如:

book.filename

3、将MongoDB中的文件写入本地文件中

#读取文件内容
from bson import ObjectIdfrom mongo_db import client
from gridfs import GridFStry:db=client.schoolgfs=GridFS(db,collection="book")#根据id获得文件doc=gfs.get(ObjectId("66fa395dbf3f57cbad976084"))file=open("D:/Data/Linux宝典.pdf","wb")file.write(doc.read())file.close()except Exception as e:print(e)

doc=gfs.get(ObjectId("66fa395dbf3f57cbad976084"))就将获得的内容返回给了doc。在通过write写入本地文件

http://www.lryc.cn/news/451982.html

相关文章:

  • Redis --- 第二讲 --- 特性和安装
  • 基于单片机的两轮直立平衡车的设计
  • 828华为云征文|部署个人知识管理系统 SiyuanNote
  • MATLAB中pcg函数用法
  • Veritus netbackup 管理控制台无法连接:未知错误
  • 安全中心 (SOC) 与 网络运营中心 (NOC)
  • WPS使用越来越卡顿
  • 吴恩达深度学习笔记:卷积神经网络(Foundations of Convolutional Neural Networks)2.5-2.6
  • C# 解决Excel边框样式无法复制问题及实现格式刷功能
  • 前端组件化开发
  • 异步操作实现线程池
  • 长期提供APX515/B原装二手APX525/B音频分析仪
  • 【数据库差异研究】update与delete使用表别名的研究
  • idea远程连接docker
  • Docker 安装 ClickHouse 教程
  • 过渡到内存安全语言:挑战和注意事项
  • 在Pycharm中安装Cv2
  • 减少重复的请求之promise缓存池(构造器版) —— 缓存promise,多次promise等待并返回第一个promise的结果
  • cdq+bitset处理高维偏序
  • 敏捷开发和传统开发,你更适合哪种?
  • python之with
  • vue3 升级实战笔记
  • 利用函数模块化代码实操 ← Python
  • Java高效编程(12):重写toString方法
  • 谷歌给到的185个使用生成式AI的案例
  • 程序员如何通过专业与软技能提升核心竞争力
  • 基于YOLOv8的智能植物监测机器人
  • 2024年OpenAI DevDay发布实时 API、提示缓存等新功能
  • Raspberry Pi3B+之安装bookworm+Rpanion系统
  • 无人机专业除理论外,飞手执照、组装、调试实操技术详解