PyMongo GridFS 教程:在 MongoDB 中存储和管理大型文件

2023-04-15 00:00:00 文件 管理 教程

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 类型进行上传。

相关文章