Как получить представление базы данных в 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