如何使用 Google App Engine GQL 查询 (Python) 从下表获取行?

1 投票
2 回答
1132 浏览
提问于 2025-04-15 13:54
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上进行查询了。

撰写回答