GridFS示例#

这个例子演示了如何使用 gridfs 在MongoDB中存储大型二进制对象(如文件)。

参见

API文档 gridfs .

参见

This blog post 为了这个API背后的动机。

安装程序#

我们从创建一个 GridFS 要使用的实例:

>>> from pymongo import MongoClient
>>> import gridfs
>>>
>>> db = MongoClient().gridfs_example
>>> fs = gridfs.GridFS(db)

每个 GridFS 实例是用创建的,并将在特定的 Database 实例。

保存和检索数据#

最简单的工作方法 gridfs 是使用它的键/值接口( put()get() 方法)。要将数据写入GridFS,请使用 put()

>>> a = fs.put(b"hello world")

put() 在GridFS中创建一个新文件,并返回文件文档的 "_id" 钥匙。鉴于此 "_id" 我们可以利用 get() 要取回文件的内容:

>>> fs.get(a).read()
b'hello world'

get() 返回一个类似文件的对象,因此我们通过调用 read() .

除了把 str 作为一个GridFS文件,我们还可以将任何类似文件的对象(一个带有 read() 方法)。GridFS将自动读取块大小的文件段。我们还可以将其他属性作为关键字参数添加到文件中:

>>> b = fs.put(fs.get(a), filename="foo", bar="baz")
>>> out = fs.get(b)
>>> out.read()
b'hello world'
>>> out.filename
'foo'
>>> out.bar
'baz'
>>> out.upload_date
datetime.datetime(...)

我们设定的属性 put() 存储在文件文档中,调用 get() . 一些属性(比如 "filename" )是特殊的,在GridFS规范中定义的-有关详细信息,请参阅该文档。