微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

django 使用Django从数据库中随机取N条记录的不同方法

第一种方法:适合于数据库数量百万级别时使用

MyModel.objects.order_by('?')[:2]

第二种方法:适合用于数量在上亿级别时使用

last = MyModel.objects.count() - 1  
# 这是一个获取两个不重复随机数的简单方法  
index1 = randint(0, last)  
index2 = randint(0, last - 1)  
if index2 == index1:   
    index2 = last  
MyObj1 = MyModel.objects.all()[index1]  
MyObj2 = MyModel.objects.all()[index2]

# 优化代码
sample = random.sample(xrange(Record.objects.count()),n)  
result = [Record.objects.all()[i] for i in sample]

# 最优化代码
result = random.sample(Record.objects.all(),n)

参考文章:https://stackoverflow.com/questions/1731346/how-to-get-two-random-records-with-django

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐