Ming支持GridFS从0.3版本开始,到目前为止我已在几个Turbogears应用程序中使用它,但找不到任何有关如何使用GridFS的文档,
这是我到目前为止所做的,在我的模型store.py
模块中:
#import statements
BookFile = fs.filesystem('books',DBSession.impl,)
class Book(MappedClass):
"""
Book definition.
"""
class __mongometa__:
session = DBSession
name = 'books'
unique_indexes = [('title',),('author',),]
_id = FieldProperty(s.ObjectId)
title = FieldProperty(s.String)
author = FieldProperty(s.String)
isbn = FieldProperty(s.String)
vendor = FieldProperty(s.String)
_file = FieldProperty(s.ObjectId)
def _get_file(self):
return BookFile.m.find(dict(_id=self._file)).one()
def _set_file(self, name, data):
f = BookFile.m.put(name,data)
self._file = f
bookf = SynonymProperty(_get_file, _set_file)
正如您所看到的,fs.filesystem
无法使用ODMSession
(在这种情况下为ThreadLocalODMSession
),因此我必须通过以下方式下载到基本的ming.Session
做DBSession.impl
。
我担心的是,Turbogears一直在使用ThreadLocalODMSession来适应多线程环境,但我上面所做的是给GridFS Connection提供非线程安全的Session。
没关系?
我应该如何正确/安全地做到这一点?
任何帮助,将不胜感激,
谢谢:))
答案 0 :(得分:1)
DBSession.impl
应该没问题,因为ming.Session
不会存储任何数据。