How to get Django to show debug SQL logging output in the shell. Works in Django 1.10!
Start the Django shell:
python manage.py shell
Paste this into your shell:
import logging log = logging.getLogger('django.db.backends') log.setLevel(logging.DEBUG) log.addHandler(logging.StreamHandler())
The last line log.addHandler(logging.StreamHandler()) may not be needed if you already have a StreamHandler in your logging config. Worst case, you’ll see the SQL twice.
Next time you run a QuerySet it will show the SQL and the regular result:
>>> MyModel.objects.filter(row_id__in=[15,17])\ .distinct().values('user_id').annotate(user_count=Count('user_id'))\ .filter(user_count__gt=1).order_by('user_id') DEBUG (0.001) SELECT DISTINCT `my_model`.`user_id`, COUNT(`my_model`.`user_id`) AS `user_count` FROM `my_model` WHERE `my_model`.`tag_id` IN (17, 15) GROUP BY `my_model`.`user_id` HAVING COUNT(`my_model`.`user_id`) > 1 ORDER BY `my_model`.`user_id` ASC LIMIT 21; args=(17, 15, 1) <QuerySet [{'user_count': 2, 'user_id': 1L}, {'user_count': 2, 'user_id': 5L}]>