0

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不能参加ODMSessionThreadLocalODMSession在这种情况下),所以我必须通过做下降到基础ming.Session课程DBSession.impl

我担心的是,Turbogears 一直在使用 ThreadLocalODMSession 来适应多线程环境,但我上面所做的是给 GridFS Connection 非线程安全会话。

可以吗?
我应该如何正确/安全地做到这一点?
任何帮助将不胜感激,谢谢:)

4

1 回答 1

1

DBSession.impl应该没问题,因为不ming.Session存储任何数据。

于 2012-12-06T19:11:35.320 回答