#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 не имеет встроенной концепции «ранга», поскольку результаты могут быть отсортированы несколькими способами, поэтому, если вам это нужно, вам нужно будет реализовать это самостоятельно.
В качестве альтернативы, если вам нужны только пользователи по обе стороны от текущего ранга пользователя, смотрите Решение Кевина П.