Google App Engine 或查询(Python)

4 投票
2 回答
1245 浏览
提问于 2025-04-16 04:09

有没有人能分享一下在应用引擎中如何做“或”查询的方法?

假设我有

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

在valueA中,我有

aaa
aaa, bbb
bbb
ccc

我想要的结果是,如果valueA匹配'aaa'或'bbb',就返回结果,并且不重复。

2 个回答

2

@Amber的方法有两个主要问题:首先,它运行得很慢,因为每个值背后都要进行一次查询;其次,它最多只能查询30个值。我刚写了一篇关于这个问题的博客文章,里面解释了在应用引擎中进行OR查询的最佳可扩展方法。你可以使用一个单独的实体来实现这个功能。具体细节可以查看那篇文章。

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

6

试试这个?

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

或者用等效的GQL:

GqlQuery('SELECT * FROM A_db_model WHERE valueA IN :1', ['aaa', 'bbb'])

撰写回答