Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 来自数据库的金字塔遍历返回数据(mongodb)_Python_Mongodb_Pyramid - Fatal编程技术网

Python 来自数据库的金字塔遍历返回数据(mongodb)

Python 来自数据库的金字塔遍历返回数据(mongodb),python,mongodb,pyramid,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):

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()
在根资源中,我可以使用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
我得到一个错误:
\uuuu init\uuuu()
只接受2个参数(给定1个)

然后,我移除

self.collection = request.db.post
在Post上,没有错误返回,但我无法从Post返回数据库中的任何数据,那么如何从除Root以外的其他资源返回数据库中的任何数据呢?

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

return Post(self.request)
或:


我不知道你是如何正常访问数据库的;如果通过
request.db
访问数据库的唯一方法是将
self.request
传递给您的
Post()
实例,并在
Post
类中访问
self.request.db

我已经尝试过,但仍然不起作用,问题似乎来自
初始化(self,request)
,当我删除
request
self.collection
时,没有错误返回,但我仍然无法使用其他资源从数据库返回任何数据,而不是root@FarisNasution:你是对的,我的分析是错的;您的构造函数需要一个请求对象,但您从未传入它。事实上,dict的
super()
调用工作正常。更正了答案。
class Post(dict):
   def __init__(self):
       # ...