Assez simple, dans mon application AppEngine, j'ai plus d'un million d'entités d'un même type, quelle est la meilleure façon d'en choisir une au hasard?Récupérer une entité aléatoire à partir du magasin de données
3
A
Répondre
0
Voir cette question:
Fetching a random record from the Google App Engine Datastore?
-1
Peut-être une solution, mais je ne sais pas si c'est le meilleur :)
import random
from google.appengine.ext import db
from google.appengine.api import memcache
DATA_KEY = "models/keys/random"
def get_data():
data = memcache.get (DATA_KEY)
if data is None:
offset = random.randint (1, 1000000)
data = self.MyModel.all (keys_only=True).fetch (100, offset)
memcache.add (DATA_KEY, data, 60)
entity_key = random.choice (data)
return db.get (entity_key)
+1
La récupération prendra plus de temps à mesure que la taille du décalage augmente. Vous devriez vous attendre à une exception DeadlineExceeded sur presque toutes les requêtes avec ce code. – geoffspear
double possible de [Comment obtenir quelque chose au hasard dans datastore (AppEngine)?] (Http://stackoverflow.com/questions/3450926/how-to-get-something-random-in-datastore-appengine) –
duplication possible de [Récupérer un enregistrement aléatoire du magasin de données Google App Engine?] (http://stackoverflow.com/questions/3002999/fetching-a-ra ndom-record-from-google-app-engine-datastore) –