金字塔遍历从数据库返回数据(mongodb)

时间:2012-09-02 11:10:22

标签: python mongodb pyramid

resources.py:

class Root(object):
    __parent__ = __name__ = None

    def __init__(self, request):
        super(Root, self).__init__()
        self.request = request
        self.collection = request.db.post

    def __getitem__(self, key):
        if u'post' in key:
            return Post()

在Root资源中,我可以使用request.db.post返回数据库上的任何数据,然后我创建了另一个资源:

class Post(dict):

    def __init__(self, request):
        super(Post, self).__init__()
        self.__name__ = u'post'
        self.__parent__ = Root
        self.collection = request.db.post

我收到了一个错误:__init__()只有2个参数(给定1个)

然后我删除了

self.collection = request.db.post
在Post上

,没有错误返回,但我无法从Post返回数据库中的任何数据,那么如何从Root以外的其他资源返回数据库中的任何数据?

1 个答案:

答案 0 :(得分:2)

您创建一个没有任何参数的Post()实例,但您的构造函数希望您传入request参数。传递请求或删除参数要求:

return Post(self.request)

或:

class Post(dict):
   def __init__(self):
       # ...

我不知道您是如何正常访问数据库的;如果通过request.db访问数据库的唯一方法,则将self.request传递到Post()个实例,然后访问self.request.db课程中的Post

相关问题