Ming 从 0.3 版本开始支持 GridFS,到目前为止,我已经在几个 Turbogears 应用程序中使用过它,但是找不到任何关于如何将 GridFS 与 Ming 一起使用的文档,
这是我到目前为止所做的,在我的模型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 非线程安全会话。
可以吗?
我应该如何正确/安全地做到这一点?
任何帮助将不胜感激,谢谢:)