django,python 实现博客随机日志的方法

在写博客的时候,通常会加入最新日志,随机日志等。特别是用过WORDPRESS 博客的,都基本用过这个功能,但这个随机日志是怎么得到的呢。

为了验证方便,假设有一个表:my_article.
想在自己的博客中也加入类似的功能。初步考虑,有如下几种方法。
一. 纯数据库方式
二. 利用python生成随机数,然后用django 的 orM 查询.

1. 既然是博客,记录日志,必然和数据库打交道。所以可以在数据库上做文章。
比如mysql ,支持随机查询。

程序代码 程序代码

select * from my_article orDER BY RAND() LIMIT 10;


但这条语句效率很低,一般不会用。最常用的是,得到表的最大ID值,最小ID值,然后进行处理
程序代码 程序代码

Select * FROM my_article Where autoid >= ((Select MAX(autoid) FROM my_article)-(Select MIN(autoid) FROM my_article)) * RAND() + (Select MIN(autoid) FROM my_article)  LIMIT 10


看看时间对比,明显下面的语句效率高很多。

2.由python脚本生成随机数,然后再调用SQL 语句查询。
程序代码 程序代码

import random
object_ids = [random.randint(0, 100) for i in range(10)]

然后利用django的orm的in 来做查询
程序代码 程序代码

rows=models.Article.objects.filter(autoid__in=object_ids)

这样也是可以得到结果的。

但最终比较之下,我觉得采用效率高的SQL语句方便点,用 django的raw sql 去查询,但最后要返回字典,需要参考另一篇文章 django raw sql查询返回字典对象


除非申明,文章均为一号门原创,转载请注明本文地址,谢谢!
[本日志由 轻舞肥羊 于 2012-09-18 09:55 PM 编辑]
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: python django
相关日志:
评论: 0 | 引用: 0 | 查看次数: -
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.