Google App Engine: как получить смещение объекта

#python #database #google-app-engine

#python #База данных #google-app-engine

Вопрос:

Я использую Google App Engine на Python.

В моей базе данных у меня есть некоторый объект, который содержит оценку пользователя. Итак, я хотел сделать страницу о рейтинге конкретного пользователя. Для этого мне нужно получить 5 пользователей с более высоким баллом, чем у этого пользователя, и 5 пользователей с более низким баллом, чем у этого пользователя, а также позицию этого конкретного пользователя в базе данных. Я мог бы использовать метод cursor() для получения закодированного курсора. Но я не могу получить объект 5 перед идентификатором пользователя, и даже в этом случае я не могу получить позицию пользователя в базе данных. Возможно, я могу использовать смещение для выполнения запроса, но как получить смещение объекта?

Комментарии:

1. не могли бы вы опубликовать выполняемый вами запрос GQL, чтобы получить текущую оценку пользователя?

Ответ №1:

Почему бы не запросить данные дважды? Один раз для пользователей с более высоким баллом, в порядке убывания. Один раз для пользователей с более низким баллом. Извлеките пять записей в каждом запросе.

Ответ №2:

Если вам действительно, очень нужен абсолютный рейтинг пользователя, вам следует использовать библиотеку app-engine-ranklist. Как и в базах данных SQL, App Engine не имеет встроенной концепции «ранга», поскольку результаты могут быть отсортированы несколькими способами, поэтому, если вам это нужно, вам нужно будет реализовать это самостоятельно.

В качестве альтернативы, если вам нужны только пользователи по обе стороны от текущего ранга пользователя, смотрите Решение Кевина П.