2015-12-23 3 views
0

У меня есть база данных. В этом я хочу просмотреть все записи, которые были вставлены. Для этого я сделал маршрут '/ db' и добавил к нему ниже RequestHandler.Как получить представление базы данных в MOTOR Tornado?

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 при открытии/дБ маршрута. Как получить данные ip?

+0

Показать stacktrace ошибки. Также это поможет, если вы напишете (или приложите код) то, что находится в настройках ['db'] – kwarunek

+0

Он показывает: упустил неизвестный объект MotorCursor () В настройках ['db'] содержится настройки базы данных. Вот и все. над ним, db содержит базу данных. –

ответ

1

Motor's 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) 
0

Двигатель асинхронный. Для того, чтобы получить результат операции базы данных, как 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#querying-for-more-than-one-document

+0

еще такой же ошибка. –

+0

Какова эта ошибка, и какова ее трассировка стека? –

+0

Исправлена ​​ошибка. для цикла. –