python - 使用 AppEngine (Python) 获取 20 条随机记录

标签 python google-app-engine

<分区>

Possible Duplicate:
How to get something random in datastore (AppEngine)?

我正在尝试从当前的 200 条记录中随机获取 20 条记录,我假设该记录将在一个月内增长到 20,000 条以上。在 Google AppEngine 中使用 Python。

  • 它适用于 iPhone API,用户可以在其中单击“刷新”以获取另一个随机 20。

我已经阅读了很多答案,但似乎没有一个能正确运行或足够随机。任何帮助都会很棒。

我当前的代码,只获取最新的 20 个。

items = ItemUser.all().filter('is_active =', True).order('-image_date').fetch(limit=2)

一些代码示例也很棒,因为在拥有扎实的 Django 背景之后,我仍然专注于 Python。

最佳答案

App 引擎不支持对任意选择的实体进行查询。您可能拥有的最佳选择是向相关实体添加一个属性并为其指定一个随机整数值(在创建时的范围内,比如 0 .. 2**64-1。

然后您将根据该值一次获取一个实体,在该范围内选择一些随机值并获取低于随机数的第一个实体。要获得 20 个,您必须执行 20 个查询。

由于一次获取一个实体并不能很好地利用您的配额,因此您应该只定期生成一组随机实体,而不是针对每个请求。

关于python - 使用 AppEngine (Python) 获取 20 条随机记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6079555/

相关文章:

python - 在 setup.py 中使用 Unicode 元数据的正确方法是什么?

python - Python中的条件计数

python - Python 中的 Google App Engine 文件夹 url

google-app-engine - 在 Google App Engine 中填充目录

python - GAE Python - CSV Writer 给出 ascii 编解码器错误

缺少 python gi.repository.gtk 菜单分隔符

python - 删除重复的电子邮件

python - 正则表达式每隔三个字符插入一个空格,行尾除外

java - 在 Google App Engine 上使用 log4j

python - 针对多种类型的 NDB 查询