Как получить представление базы данных в MOTOR Tornado?

У меня есть база данных. В этом я хочу просмотреть все записи, которые были вставлены. Для этого я сделал маршрут '/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)

Это дает мне ошибку 505, когда я открываю /db route. Как получить данные ip?

2 ответа

Мотор find возвращает только курсор, это не Future - это не может быть уступлено. Вы можете повторить это с fetch_next или используйте to_list чтобы получить больше данных (или больше информации в документах). Своего рода пример

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

Мотор асинхронный. Чтобы получить результат операции с базой данных, такой как find, Вы должны yield Будущее, которое он возвращает, чтобы разрешить Будущее в результате:

cursor = db.test_collection.find({'i': {'$lt': 5}}).sort('i')
for document in (yield cursor.to_list(length=100)):
    self.write(str(document))

Для получения дополнительной информации см. Учебник:

http://motor.readthedocs.org/en/stable/tutorial-tornado.html

Другие вопросы по тегам