只是想记录下来查看,个人比较喜欢直接从日志中查看,开发的时候一直开一个 tail -f logs\development.log
网上流传很多的打印sql执行语句的方法如:http://www.cnpythoner.com/post/119.html,这个不推荐用
下面是几种方法:
1、Signals 中记录
from django.db.models.signals import *
from firstapp.models import Log, Book
def log(sender,instance,created, **kwargs):
from django.db import connection
Log.objects.create(sql = str(connection.queries[-1]))
post_save.connect(log, sender = Book)
2、log 中记录
settings.py 中配置如下,这样日志中就可以查看到所有的sql执行语句了(包括runserver中执行的和shell下执行的)
import logging
logging.basicConfig(
level = logging.DEBUG,
format = '%(asctime)s %(levelname)s %(module)s.%(funcName)s Line:%(lineno)d %(message)s',
filename = 'logs/development.log',
)
logger = logging.getLogger(__name__)
3、使用 django-debug-toolbar
这个就不过多的说了,不过我用这个话只是在 INSTALLED_APPS 中增加 'debug_toolbar', 后
就可以用 manage.py debugsqlshell 了,现在在shell里操作 model,也会实时的打印出 sql 的
Last modified by vkill on2011/05/13 16:12
网上流传很多的打印sql执行语句的方法如:http://www.cnpythoner.com/post/119.html,这个不推荐用
下面是几种方法:
1、Signals 中记录
from django.db.models.signals import *
from firstapp.models import Log, Book
def log(sender,instance,created, **kwargs):
from django.db import connection
Log.objects.create(sql = str(connection.queries[-1]))
post_save.connect(log, sender = Book)
2、log 中记录
settings.py 中配置如下,这样日志中就可以查看到所有的sql执行语句了(包括runserver中执行的和shell下执行的)
import logging
logging.basicConfig(
level = logging.DEBUG,
format = '%(asctime)s %(levelname)s %(module)s.%(funcName)s Line:%(lineno)d %(message)s',
filename = 'logs/development.log',
)
logger = logging.getLogger(__name__)
3、使用 django-debug-toolbar
这个就不过多的说了,不过我用这个话只是在 INSTALLED_APPS 中增加 'debug_toolbar', 后
就可以用 manage.py debugsqlshell 了,现在在shell里操作 model,也会实时的打印出 sql 的
Last modified by vkill on2011/05/13 16:12
网友评论(0):


