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
是使用它的键/值接口( 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规范中定义的-有关详细信息,请参阅该文档。