Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Google app engine or query (python)

Can anyone share your approach for doing a 'or' query in app-engine?

Let say I have

class A_db_model(db.Model):
 valueA = db.ListProperty(basestring)

in valueA I have

aaa
aaa, bbb
bbb
ccc

I would like to return result of if the valueA match 'aaa' or 'bbb' and return not duplicated result.

like image 386
Pete Avatar asked Feb 26 '23 06:02

Pete


2 Answers

Try this?

A_db_model.all().filter('valueA IN', ['aaa', 'bbb'])

or the equivalent GQL:

GqlQuery('SELECT * FROM A_db_model WHERE valueA IN :1', ['aaa', 'bbb'])
like image 175
Amber Avatar answered Feb 28 '23 19:02

Amber


The two main problems with @Amber's approach is that it is slow as it basically runs a query for each value behind the scenes and it maxes out at 30 values to query for. I just wrote a blog post about this question. It explains the best scalable way to basically do an OR query with app engine. You can use a separate entity to make this happen. See the post for details.

http://tornblue.com/post/11310830291/app-engine-how-to-do-an-efficient-or-query

like image 45
peteynorge Avatar answered Feb 28 '23 20:02

peteynorge