直接貼英文,翻譯不好反而影響讀者,英文如下:
GridFS Example
This example shows how to use
gridfs to store large binaryobjects (e.g. files) in MongoDB.
See also
The API docs for
gridfs.
See also
This blog postfor some motivation behind this API.
Setup
We start by creating a
GridFS instance to use:
>>> from pymongo import Connection>>> import gridfs>>>>>> db = Connection().gridfs_example>>> fs = gridfs.GridFS(db)
Every
GridFS instance is created with and willoperate on a specific
Database instance.
Saving and Retrieving Data
The simplest way to work with
gridfs is to use its key/valueinterface (the
put() andget()
methods). To write data to GridFS, useput():
>>> a = fs.put("hello world")
put() creates a new file in GridFS,
and returnsthe value of the file document’s "_id" key. Given that
"_id"we can use
get() to get back the contents of thefile:
>>> fs.get(a).read()'hello world'
get() returns a file-like object,
so we get thefile’s contents by calling
read().
In addition to putting a str as a GridFS file, we can alsoput any file-like object (an object with a
read()method). GridFS will handle reading the file in chunk-sized segmentsautomatically. We can also add additional attributes to the file askeyword arguments:
>>> b = fs.put(fs.get(a), filename="foo", bar="baz")>>> out = fs.get(b)>>> out.read()'hello world'>>> out.filenameu'foo'>>> out.baru'baz'>>> out.upload_datedatetime.datetime(...)
The attributes we set in
put() are stored in thefile document, and retrievable after callingget().
Some attributes (like "filename") arespecial and are defined in the GridFS specification - see thatdocument for more details.
例子源碼如下:
from pymongo import Connectionimport gridfsdb = Connection().gridfs_examplefs = gridfs.GridFS(db)a = fs.put("hello world")print acontent = fs.get(a).read()print contentb = fs.put(fs.get(a), filename="foo", bar="baz")out = fs.get(b)print bprint out.filenameprint out.bar