我有一个表单,需要将数据插入到数据库。当我处理该表单时,它会给我一个值错误,但是当我手动在数据库中尝试插入时,它可以正常工作。
为了调试这种情况,我想看看Django生成的失败查询。在调试网页上,我没有看到任何类似SQL查询的东西。
我该如何查看Django生成的实际查询?
请建议。谢谢。
使用日志记录怎么样?
您可以在settings.py中添加以下内容。
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'handlers': {
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
},
},
'loggers': {
'django': {
'handlers': ['console'],
'level': 'DEBUG',
'propagate': True,
},
},
}
你可以将此代码添加到任何views.py文件中。
import logging
l = logging.getLogger('django.db.backends')
l.setLevel(logging.DEBUG)
l.addHandler(logging.StreamHandler())
在您的控制台中,您可以检查SQL查询。
另一种方法
进入shell界面
python manage.py shell
>>from yourmodel import Example
>>queryset = Example.objects.all()
>>print(queryset.query)
您可以查看原始查询字符串。
根据 Django 文档
connection.queries 包含所有的 SQL 语句 - INSERTs,UPDATES,SELECTs 等等。每次你的应用程序访问数据库时,查询将被记录下来。
因此,您可以运行以下操作来访问这些查询:
from django.db import connection
print(connection.queries)