Django how to see generated SQL query?

后端 未结 2 991
再見小時候
再見小時候 2021-02-10 13:10

I have a form which takes data and is supposed to insert it into a database. When I am processing that form it gives me a value error, but when I go to the database and try to i

相关标签:
2条回答
  • 2021-02-10 13:48

    If you happen to use PyCharm, running your application in the debugger gives you the full context. Set a breakpoint, and browse in your app to the point you are having the error and get a screen like (trivial example):

    Running in this way has changed the way I troubleshoot when using Django. I suspect other IDE's may have similar features. Some further video documentation of the process from the vendor at: https://www.youtube.com/watch?v=QJtWxm12Eo0

    As Jayground suggested, logging is probably something you'll turn on eventually anyway; great suggestion.

    0 讨论(0)
  • 2021-02-10 14:06

    How about using logging?

    you can add this in settings.py

    LOGGING = {
        'version': 1,
        'disable_existing_loggers': False,
        'handlers': {
            'console': {
                'level': 'DEBUG',
                'class': 'logging.StreamHandler',
            },
        },
        'loggers': {
            'django': {
                'handlers': ['console'],
                'level': 'DEBUG',
                'propagate': True,
            },
        },
    }
    

    and you can add this in your any views.py

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

    In your console, you can check SQL query.

    Another way

    go shell

    python manage.py shell
    
    >>from yourmodel import Example
    >>queryset = Example.objects.all()
    >>print(queryset.query)
    

    you can see raw query string.

    0 讨论(0)
提交回复
热议问题