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

前端之家收集整理的这篇文章主要介绍了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

猜你在找的Django相关文章