如何使用 Google App Engine GQL 查询 (Python) 从下表获取行?
List_name Email
========== ==================
andrew adam@gmail.com
adam adam@gmail.com
smith adam@gmail.com
john adam@gmail.com
andrew andrew@gmail.com
adam andrew@gmail.com
smith andrew@gmail.com
john andrew@gmail.com
andrew john@gmail.com
adam john@gmail.com
smith john@gmail.com
john john@gmail.com
andrew smith@gmail.com
adam smith@gmail.com
smith smith@gmail.com
john smith@gmail.com
在上面的表格中,电子邮件地址是重复的,我想把所有的电子邮件显示出来,但不想重复。
这里总共有4个电子邮件地址,我只想从表格中提取这4行数据,这在谷歌应用引擎的GQL查询中可以做到吗?
还有一件事,我想用分页来显示电子邮件(每页显示10个电子邮件),
也就是说,如果表格里有15个电子邮件,第一页需要显示10个,第二页显示5个。
分页非常重要!
2 个回答
1
你可以在Python中使用set这个函数,这样就能去掉所有重复的内容。我觉得在GQL中没有办法做到这一点。
>>> basket = ['apple', 'orange', 'apple', 'pear', 'orange', 'banana']
>>> fruit = set(basket) # create a set without duplicates
>>> fruit
set(['orange', 'pear', 'apple', 'banana'])
4
如果你习惯使用关系型数据库,使用Google App Engine可能会让你觉得有点不一样。这里的查询语法非常有限。你不能像在普通数据库里那样把所有东西放进一个简单的表里,然后写复杂的查询,而是需要把所有东西放进复杂的数据结构中,然后写简单的查询。
你需要习惯创建几个不同的实体,通常每个主键对应一个实体。比如,你可以创建一个叫做UniqueEmailAddress的实体。每次你添加一条记录时,就获取这个名字的UniqueEmailAddress,更新它,如果它不存在,就创建一个。这样,你就可以直接在UniqueEmailAddress上进行查询了。