我們通常用django model 來進(jìn)行一些數(shù)據(jù)查詢的時候,對內(nèi)部執(zhí)行的sql語句流程是不了解的,這對我們做一些sql方面的優(yōu)化造成了一些困擾。
其實django model對象內(nèi)部就有一個能夠查詢當(dāng)前執(zhí)行的sql語句。
比如:
你需要調(diào)用文章類別:
antype = Articletype.objects.values('id').filter(parent__isnull=True).exclude(id=6)
上面是輸出類別的id,條件是parent_id is Null 并且id<>6
下面我們看下怎么用django 在控制臺輸出sql語句:
我們直接調(diào)用:
print antype.query
每個model對象都有一個query屬性,輸出當(dāng)前執(zhí)行的sql語句。
這樣就行,輸出結(jié)果:
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上就定義好了。