Supposons que j'ai la base de données GQL suivante,Compter le nombre de chaînes distinctes données par une requête dans GQL Python
class Signatories(db.Model):
name = db.StringProperty()
event = db.StringProperty()
Cette base de données contient des informations sur les événements que les gens ont signé pour. Dites que j'ai les entrées suivantes dans la base de données au format (event_name, event_desc): (Bob, TestEvent), (Bob, TestEvent2), (Fred, TestEvent), (John, TestEvent). Mais le dilemme ici est que je ne peux pas agréger tous les événements de Bob en une seule entité parce que je voudrais demander à tous les gens inscrits pour un événement spécifique et aussi je voudrais ajouter ces entrées sans avoir à mettre à jour manuellement l'entrée à chaque fois.
Comment pourrais-je compter le nombre de chaînes distinctes données par une requête GQL en Python (dans mon exemple, j'essaie spécifiquement de voir combien de personnes sont actuellement inscrites à des événements)?
J'ai essayé d'utiliser l'ancien mcount = db.GqlQuery("SELECT name FROM Signatories").count()
, mais cela renvoie bien sûr le nombre total de chaînes dans la liste, quel que soit le caractère unique de chaque chaîne.
J'ai également essayé d'utiliser count = len(member)
, où member = db.GqlQuery("SELECT name FROM Signatories")
, mais malheureusement, cela ne renvoie qu'une erreur.
Oh, j'ai utilisé le mauvais exemple en cas d'accident, donc je peux vous avoir induit en erreur. Je ne serais pas en mesure de faire ces listes agrégées (ou pourrais-je?). Serait-il possible de convertir ce que la requête crache en une liste, puis d'utiliser len() avec cela (ou est-ce impossible)? En tout cas, merci pour votre aide. – Diafotismos
Bien sûr, vous pouvez faire une requête de projet et ne renvoyer que les deux champs qui vous intéressent. Ensuite, utilisez la compréhension de liste pour transformer le jeu de résultats dans l'ensemble de tuples, et vous aurez un ensemble de valeurs uniques que vous pouvez utiliser.) sur. –
'len (set (nom i pour i dans db.GqlQuery (" SELECT nom FROM Signataires ")))' –