Dans mon application GAE, je veux créer un JDOQL qui retourne une liste où chaque élément existe au maximum une fois même dans la base de données il y en a plus. Comment puis-je faire ceci?Requêtes avec JDOQL Jeu de résultats unique
0
A
Répondre
0
Je ne sais pas à propos JDOQL, mais si vous voulez une liste où chaque entité existe la plus grande une fois dire que chaque élément de la liste est unique, alors vous pouvez faire ce qui suit:
Asume vous avez une classe type entit/modèle nous appelons Type, avec les attributs att1, attr2. Vous voulez avoir une liste d'éléments uniques basés sur un ou plusieurs des attributs, disons attr2.
vous pouvez utiliser la méthode suivante que je me suis adapté d'une bonne source sur la question:
def unique(seq, idfun=None): ''' A function that returns a list of unique items in a very efficient manner Refer to : http://www.peterbe.com/plog/uniqifiers-benchmark ''' # order preserving if idfun is None: def idfun(x): return x seen = {} result = [] for item in seq: marker = idfun(item) # in old Python versions: # if seen.has_key(marker) # but in new ones: if marker in seen: continue seen[marker] = 1 result.append(item) return result
la pour obtenir une liste des éléments uniques du type de type datastore basé sur attr2 que je pouvais faire quelque chose comme:
list = Type.all() unique_list = unique(list,lambda t: t.attr2)
Espérons que cela aide parce que cela a été la meilleure méthode pour moi jusqu'ici.