一尘不染

Django:从python shell显示/记录ORM sql调用

django

使用出色的Django-Devserver,我可以在代码中找到各种有趣且意外的SQL调用。我想找到调用的来源,因此我正在寻找一种方法来获取日志或打印出Python Shell中Django ORM生成的所有SQL调用。也就是说,当我通过Python Shell进行Django ORM调用时,我希望看到输出的SQL记录或记录下来。

我注意到几种将日志信息添加到html页面的解决方案。有没有一种简单的方法可以转储到命令行?


阅读 393

收藏
2020-03-30

共2个答案

一尘不染

如果你在外壳中,或者在任何地方,都可以使用queryset方法

query.as_sql()

打印SQL命令。

即:

MyModel.objects.all().query.as_sql()
2020-03-30
一尘不染

如果你使用的是Django 1.3:

import logging
l = logging.getLogger('django.db.backends')
l.setLevel(logging.DEBUG)
l.addHandler(logging.StreamHandler())
2020-03-30