The best way is to assign a one-up counter to each record as you create it, then call random.randint(1,max_counter) to determine the desired record.
To retrieve multiple random entities in a query, do a filter('IN ', [my random nums]). Note that behind the scenes this generates multiple queries, so you're not saving much time. On Jul 10, 7:34 am, Wooble <geoffsp...@gmail.com> wrote: > Highly non-optimal solution: have a cron job assign new random numbers > to your entities often enough to simulate randomness. Even just re- > assigning numbers to entities that have been previously selected might > work. This involves a lot more CPU as you'd be doing writes, but > shifts the work from request time to a background process so your > users don't see the added latency for doing N queries. > > Another possible solution would be to fetch keys only for X*N entities > (where greater X's produce more apparent randomness) then choose N of > those keys to actually fetch entities. > > On Jul 9, 12:33 pm, aloo <aleem.maw...@gmail.com> wrote: > > > Hi all, > > > I'm trying to write a GQL query that returns N random records of a > > specific kind. My current implementation works but requires N calls to > > the datastore. I'd like to make it 1 call to the datastore if > > possible. > > > I currently assign a random number to every kind that I put into the > > datastore. When I query for a random record I generate another random > > number and query for records > rand ORDER BY asc LIMIT 1. > > > This works, however, it only returns 1 record so I need to do N > > queries. Any ideas on how to make this one query? Thanks. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Google App Engine" group. To post to this group, send email to google-appengine@googlegroups.com To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en -~----------~----~----~----~------~----~------~--~---