当前位置: 首页 > 面试题库 >

如何在数据存储区(AppEngine)中获得随机数据?

常英毅
2023-03-14
问题内容

目前我正在使用这样的东西:

    images = Image.all()
    count = images.count()
    random_numb = random.randrange(1, count)
    image = Image.get_by_id(random_numb)

但是事实证明,AppEngine上的数据存储区中的ID不是从1开始的。我在数据存储区中有两个图像,其ID为6001和7001。

有没有更好的方法来检索随机图像?


问题答案:

数据存储是分布式的,因此ID是非顺序的:两个数据存储节点需要能够同时生成ID而不会引起冲突。

要获得随机实体,可以在创建时将0到1之间的随机浮点数附加到每个实体。然后进行查询,执行以下操作:

rand_num = random.random()
entity = MyModel.all().order('rand_num').filter('rand_num >=', rand_num).get()
if entity is None:
  entity = MyModel.all().order('rand_num').get()

编辑: 根据尼克的建议,更新了失败案例。



 类似资料:
  • 问题内容: 我正在尝试决定是否应针对App引擎关联的Android项目使用App引擎搜索API或数据存储区。Google文档的唯一区别是 …索引搜索最多只能找到10,000个匹配的文档。App Engine数据存储区可能更适合需要检索非常大的结果集的应用程序。 鉴于我已经非常熟悉数据存储区:假设我不需要10,000个结果,有人可以帮我吗? 是否有任何优势,利用与使用数据存储为我的查询(根据上面的报

  • 问题内容: 我在Google App Engine数据存储区中为数据库模型创建了一个新属性。 旧: 新: 如何查询未设置“ is_approved”值的徽标记录?我试过了 但这没用。在数据查看器中,新字段值显示为。 问题答案: 据有关App Engine文档查询和索引,也有实体之间的区别 没有 一个属性值,以及那些具有 空 值,它; 和“没有筛选属性的实体永远不会由查询返回”。因此,不可能为这些旧

  • 本文向大家介绍如何获得MySQL随机整数范围?,包括了如何获得MySQL随机整数范围?的使用技巧和注意事项,需要的朋友参考一下 要获取随机整数范围,请使用函数。创建表的查询- 将记录插入表中。查询如下- 现在,您可以在select语句的帮助下显示所有记录。查询如下- 以下是显示整数的输出- 生成随机整数范围的查询如下- 输出在同一表中显示随机整数范围-

  • 问题内容: 我正在尝试使用他们的电子邮件地址在appengine数据存储区中查找用户。我正在使用Go。 此代码找不到任何用户。 如果我更改查询以使用“ Id”属性查找用户,则可以正常工作。 我已经确认“ AccountEmail”的属性名称和值正确。“ AccountEmail”它也被索引。 为了使查询正常工作,是否需要使用电子邮件地址进行某些特殊格式设置? 问题答案: 为了通过电子邮件()查找用

  • 问题内容: 考虑以下代码: 它将返回30到20之间的随机数。但是,我需要它的范围包括负数。 我如何在这一代中包括负数? 我曾尝试使用会是负数的数学,但这导致了错误。简单地减去或加上负数将不会产生所需的值。 编辑: 对不起,我只有半醒。正确的代码是。 问题答案: 要使用和获取设置范围内的随机数: 也适用于负数 所以: 会产生介于-10和30之间的随机整数。 也可以加倍

  • 问题内容: 如何生成5个唯一的随机数? 现在我有类似的东西 结果可能如下所示: 这些数字必须唯一且经过排序,因此看起来像: 任何的想法? 问题答案: 如果范围很小,并且有一个整数表,则可以使用一种幼稚的方法: