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

摘要: 在写博客的时候,通常会加入最新日志,随机日志等。特别是用过WORDPRESS 博客的,都基本用过这个功能,但这个随机日志是怎么得到的呢。为了验证方便,假设有一个表:my_article.想在自己的博客中也加入类似的功能。初步考虑,有如下几种方法。一. 纯数据库方式

在写博客的时候,通常会加入最新日志,随机日志等。特别是用过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查询返回字典对象

上一篇: 外部python脚本调用django model
下一篇: Apache,wsgi,django 程序部署配置
 评论 ( What Do You Think )
名称
邮箱
网址
评论
验证
   
 

 


  • 微信公众号

  • 我的微信

站点声明:

1、一号门博客CMS,由Python, MySQL, Nginx, Wsgi 强力驱动

2、部分文章或者资源来源于互联网, 有时候很难判断是否侵权, 若有侵权, 请联系邮箱:summer@yihaomen.com, 同时欢迎大家注册用户,主动发布无版权争议的 文章/资源.

3、鄂ICP备14001754号-3, 鄂公网安备 42280202422812号