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

相关文章

注:所有源代码均实测运行过。所有源代码均已上传CSDN,请有...
继承APIView和ViewSetMixin;作用也与APIView基本类似,提供...
一、Django介绍Python下有许多款不同的 Web 框架。Django是重...
本文从nginx快速掌握到使用,gunicorn快速掌握到使用,实现小...
uniapp微信小程序订阅消息发送服务通知
Django终端打印SQL语句 1 Setting配置: 2 默认python 使用的...