Question

Hello I have this on my GAE application:

try:
    last = RegistroDescargas.gql("order by date DESC LIMIT 4")
except:
    last = None

With that I can get the last four rows of the database ("RegistroDescagas") that is defined as follows:

class RegistroDescargas(db.Model):
    '''Model para guardar el registro de vídeos descargados en la web'''
    date = db.DateTimeProperty(auto_now_add=True)
    urlOrig = db.StringProperty(required=True)
    urlImg = db.StringProperty(required=True)
    vidTit = db.StringProperty(required=True)
    vidDesc = db.TextProperty()

But of course, if one or the last four results are repeated, just shows me and what I want is to get the last not repeated four rows, and I do not know how I can do that...

Any suggestions? (I think, if at the end this is possible, could be with a totally different sentence, but I don't mind ;))

Any help much appreciated.. Sorry for my english..

Was it helpful?

Solution

GQL does not support DISTINCT queries. The closet you can do is put the results into a set and check how many entries are in a set. If less than four, query for additional records.

This answer is more in depth: Python: DISTINCT on GQuery result set (GQL, GAE)

Otherwise, such distinct list need to be pre-computed. GAE follows a mantra of expensive writes to enable super-fast reads.

OTHER TIPS

The DISTINCT keyword was introduced in release 1.7.4..

You can find the updated GQL reference (for example for Python) here.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top