如何在MOTOR Tornado中获取数据库视图?

时间:2015-12-23 21:13:01

标签: python mongodb tornado tornado-motor

我有一个数据库。 在那里我想查看已插入的所有条目。 为此我做了一条路线' / db'并将以下RequestHandler添加到其中。

class dbHandler(RequestHandler):
    @gen.coroutine
    def get(self):
        db = self.settings['db']
        result = yield db.ip.find()
        for res in result:
           self.write(res)

当我打开/ db route时,这给了我错误505。 如何获取ip的数据?

2 个答案:

答案 0 :(得分:1)

马达find仅返回光标,而不是Future - 它不能被屈服。您可以使用fetch_next对其进行迭代,或使用to_list获取更多数据(或docs中的更多信息)。某种例子

@gen.coroutine
def get(self):
    db = self.settings['db']
    cursor = db.ip.find()
    res = yield cursor.to_list(length=100)
    self.write(res)

答案 1 :(得分:0)

电机是异步的。为了获得像async.waterfall这样的数据库操作的结果,你必须find它返回的Future来将Future解析为结果:

yield

有关详细信息,请参阅教程:

http://motor.readthedocs.org/en/stable/tutorial-tornado.html#querying-for-more-than-one-document