PyMongo GridFS 教程:在 MongoDB 中存储和管理大型文件
GridFS 是 MongoDB 的一种存储机制,可以存储和管理大型文件。相比于普通的 BSON 文档存储,GridFS 可以有效地处理超出 BSON 文档大小限制的文件。在 GridFS 中,文件被拆分成多个块进行存储,每个块大小默认为 255KB。
在 Python 中使用 GridFS,通常需要安装 PyMongo,PyMongo 是 MongoDB 官方提供的 Python 语言驱动程序。
安装 PyMongo 时,可以通过 pip 命令进行安装:
pip install pymongo
下面的代码演示了如何使用 PyMongo 完成 GridFS 的基本操作:
from pymongo import MongoClient from gridfs import GridFS # 连接 MongoDB 数据库 client = MongoClient('mongodb://localhost:27017/') # 获取 GridFS 对象 db = client['testdb'] fs = GridFS(db) # 上传文件到 GridFS with open('example.txt', 'rb') as f: file_id = fs.put(f.read(), filename='example.txt', description='A test file', author='pidancode.com') print(file_id) # 下载 GridFS 中的文件 out = fs.get(file_id) with open(out.name, 'wb') as f: f.write(out.read()) print(f.name) # 删除 GridFS 中的文件 fs.delete(file_id)
在上面的代码中,首先通过 MongoClient 连接了本地 MongoDB 数据库,获取到了一个名为 "testdb" 的数据库。然后利用 GridFS 对象上传了一个名为 "example.txt" 的文件,同时为文件设置了描述信息和作者信息。上传文件时,需要用 read() 方法读取文件内容,并将其作为参数传递给 put() 方法,返回一个文件 ID。
之后使用 get() 方法根据文件 ID 获取文件数据,并在本地保存文件。最后使用 delete() 方法删除了刚才上传的文件。
需要注意的是,若文件内容为字符串,使用 put() 方法时需要将字符串转换为 bytes 类型。例如:
fs.put("Hello, GridFS!".encode(), filename='string.txt', description='A test string', author='皮蛋编程')
这个例子中,将字符串 "Hello, GridFS!" 转换为了 bytes 类型进行上传。
相关文章