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

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.school
    gfs=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 ObjectId

from mongo_db import client
from gridfs import GridFS

try:
    db=client.school
    gfs=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.kler.cn/news/331732.html

相关文章:

  • CSS 圆形边框与阴影
  • “衣依”服装销售平台:Spring Boot技术实践与创新
  • [CSP-J 2021] 插入排序
  • react crash course 2024(8) useEffect
  • 【单片机】单片机map表详细解析
  • 【Rust网络编程】开发一个图片代理和统计服务
  • SolveigMM Video Splitter方便快捷视频分割合并软件 V3.6.1309.3-供大家学习研究参考
  • 【基于布尔的盲注】
  • OpenAI o1与GPT-4o究竟强在哪里
  • python 实现linear algebra线性代数算法
  • 利用 notepad++ 初步净化 HaE Linkfinder 规则所提取的内容(仅留下接口行)
  • 每天一个数据分析题(四百八十九)- 主成分分析与因子分析
  • 记录一次docker报错无法访问文件夹,权限错误问题
  • Mac中访达显示/关闭隐藏文件
  • opencv实战项目(三十):使用傅里叶变换进行图像边缘检测
  • PHP泛目录生成源码,可生成长尾关键词页面,带使用方法视频教程
  • 记录一次病毒启动脚本
  • Linux shell编程学习笔记85:fold命令——让文件瘦身塑形显示
  • Github 2024-09-28Rust开源项目日报Top10
  • SQL学习1