16 апр. 2010 г.

Смотрим SQL запросы в Django

А Вы знали, что SQL-запросы в джанго можно смотреть так?

Версия 1.1 и ниже:


# В django 1.1 и ниже:



>>> from foo.models import Bar

>>> Bar.objects.get(pk=1)

<Bar: Bar object>

>>> from django.db import connection

>>> connection.queries

[{'time''0.071''sql'u'SELECT "foo_bar"."id", "foo_bar"."name", "foo_bar"."age", "foo_bar"."created" FROM "foo_bar" WHERE "foo_bar"."id" = 1 '}]



# А в 1.2 будет так:



>>> from foo.models import Bar

>>> str(Bar.objects.filter(name='Mike').query)

'SELECT "foo_bar"."id", "foo_bar"."name", "foo_bar"."age", "foo_bar"."created" FROM "foo_bar" WHERE "foo_bar"."name" = Mike '


* Пример с DjangoAdvent, если ещё не читали – прочтите!

3 комментария:

Qrilka комментирует...

Я что-то не понял твоей логики, для 1.1 ты показываешь вызванный сиквел, а для 1.2 - тот, который будет вызван для queryset'а (и доступный в 1.1)

larin комментирует...

Конструкция вида:
print str(People.objects.filter(username='larin').query)

замечательно работает и в версии Django 1.1.1

Dixon комментирует...

Второго варианта не знал, спасибо!