如何在数据存储区(AppEngine)中获得随机数据?
发布于 2021-01-29 18:37:17
目前我正在使用这样的东西:
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。
有没有更好的方法来检索随机图像?
关注者
0
被浏览
80
1 个回答
-
数据存储是分布式的,因此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()
编辑: 根据尼克的建议,更新了失败案例。
推荐阅读
-
Appengine Search API与数据存储区
2021-01-30 关注 0 浏览127 1答案
-
在AppEngine项目之外使用Google AppEngine数据存储区
2021-01-29 关注 0 浏览84 1答案
-
如何使用电子邮件地址查询Appengine数据存储区
2021-02-01 关注 0 浏览167 1答案
-
AppEngine:查询数据存储区中包含的记录 值
2021-01-29 关注 0 浏览79 1答案
-
在Appengine中使用较少的数据存储区小操作
2021-01-29 关注 0 浏览62 1答案
-
如何将数据批量上传到Appengine数据存储区?较旧的方法不起作用
2021-01-29 关注 0 浏览59 1答案
-
如何在Google App Engine数据存储区中添加动态属性
2021-02-01 关注 0 浏览117 1答案
-
Golang-具有[]字节比较的Appengine数据存储区过滤器查询
2021-02-01 关注 0 浏览77 1答案
-
AppEngine数据存储区:“ ID为…的对象由其他对象管理器管理”
2021-01-30 关注 0 浏览90 1答案
-
如何使用PHP在数据库中重复生成随机数?
2021-02-02 关注 0 浏览173 1答案