Предположим, я следующую базу данных GQL,Подсчет количества различных строк данных с помощью GQL запроса в Python
class Signatories(db.Model):
name = db.StringProperty()
event = db.StringProperty()
Эта база данных содержит информацию о событиях, которые люди подписались на. Скажем, у меня есть следующие записи в базе данных в формате (event_name, event_desc): (Bob, TestEvent), (Bob, TestEvent2), (Fred, TestEvent), (John, TestEvent). Но дилемма заключается в том, что я не могу просто объединить все события Боба в одну сущность, потому что я хотел бы запросить для всех людей, подписавшихся на конкретное событие, а также я хотел бы добавить такие записи без необходимости вручную обновлять запись каждый раз.
Как я могу подсчитать количество различных строк, заданных GQL Query в Python (в моем примере я специально пытаюсь увидеть, сколько людей в настоящее время зарегистрировано для событий)?
Я попытался использовать старый mcount = db.GqlQuery("SELECT name FROM Signatories").count()
, однако это, конечно, возвращает общее количество строк в списке, независимо от уникальности каждой строки.
Я также пробовал использовать count = len(member)
, где member = db.GqlQuery("SELECT name FROM Signatories")
, но, к сожалению, это только возвращает ошибку.
О, я использовал неправильный пример аварии, так что, возможно, я вас обманываю. Я не смог бы сделать эти агрегированные списки (или я мог бы?). Можно ли было бы конвертировать то, что запрос выливает в список, а затем использовать len() с этим (или это невозможно)? В любом случае, спасибо за вашу помощь. – Diafotismos
Уверен, что вы можете сделать запрос проекта и вернуть только два интересующих вас поля. Затем используйте понимание списка, чтобы преобразовать результирующий набор в набор кортежей, а затем вы получите набор уникальных значений, которые вы можете использовать len () on. –
'len (set (i.name для i в db.GqlQuery (" SELECT name FROM Signatories ")))' –