django,python 实现博客随机日志的方法
By:Roy.LiuLast updated:2012-09-18
在写博客的时候,通常会加入最新日志,随机日志等。特别是用过WORDPRESS 博客的,都基本用过这个功能,但这个随机日志是怎么得到的呢。
为了验证方便,假设有一个表:my_article.
想在自己的博客中也加入类似的功能。初步考虑,有如下几种方法。
一. 纯数据库方式
二. 利用python生成随机数,然后用django 的 orM 查询.
1. 既然是博客,记录日志,必然和数据库打交道。所以可以在数据库上做文章。
比如mysql ,支持随机查询。
但这条语句效率很低,一般不会用。最常用的是,得到表的最大ID值,最小ID值,然后进行处理
看看时间对比,明显下面的语句效率高很多。
2.由python脚本生成随机数,然后再调用SQL 语句查询。
然后利用django的orm的in 来做查询
这样也是可以得到结果的。
但最终比较之下,我觉得采用效率高的SQL语句方便点,用 django的raw sql 去查询,但最后要返回字典,需要参考另一篇文章 django raw sql查询返回字典对象
为了验证方便,假设有一个表: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查询返回字典对象
From:一号门
Previous:外部python脚本调用django model
COMMENTS