我们通常用django model 来进行一些数据查询的时候,对内部执行的sql语句流程是不了解的,这对我们做一些sql方面的优化造成了一些困扰。

其实django model对象内部就有一个能够查询当前执行的sql语句。

比如:

你需要调用文章类别:

antype = Articletype.objects.values('id').filter(parent__isnull=True).exclude(id=6)

上面是输出类别的id,条件是parent_id is Null 并且id<>6

下面我们看下怎么用django 在控制台输出sql语句:

我们直接调用:

print antype.query

每个model对象都有一个query属性,输出当前执行的sql语句。

这样就行,输出结果:

SELECT `article_articletype`.`id` FROM `article_articletype` LEFT OUTER JOIN `article_articletype` T2 ON (`article_articletype`.`parent_id` = T2.`id`) WHERE (T2.`id` IS NULL AND NOT (`article_articletype`.`id` = 6 )) ORDER BY `article_articletype`.`rank` ASC, `article_articletype`.`id` DESC

上面的order字段信息我是在定义model的时候在class meta上就定义好了。


python视频教程

相关文章: