Pete
Pete

Reputation: 43

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.

Upvotes: 4

Views: 1247

Answers (2)

peteynorge
peteynorge

Reputation: 56

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

Upvotes: 2

Amber
Amber

Reputation: 526493

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'])

Upvotes: 6

Related Questions