使用python manage.py shell進入 shell,查詢語句People.objects.get(id=11),經過什么樣設置可以在shell中同時輸出執(zhí)行了哪些sql語句?
我的 Django 版本 1.8.10
老版本的 Django 可以使用以下的方法打印執(zhí)行的 sql 語句,新版本貌似無效了。
import logging l = logging.getLogger('django.db.backends') l.setLevel(logging.DEBUG) l.addHandler(logging.StreamHandler())
擁有18年軟件開發(fā)和IT教學經驗。曾任多家上市公司技術總監(jiān)、架構師、項目經理、高級軟件工程師等職務。 網絡人氣名人講師,...
官方文檔的回答 How can I see the raw SQL queries Django is running?
>>>?from?django.db?import?connection >>>?connection.queries
通過這個方式,可以看所有的數(shù)據庫查詢,并不是很直觀。
還有一種方式,
?>>>?a?=?Blog.objects.filter(entry__authors__name__isnull=True) ?>>>?print?a.query ?>>>?Blog.objects.filter(entry__authors__name__isnull=True).query.sql_with_params()
說個比較簡單的方式吧,比如下面的代碼:
>>>?from?django.contrib.auth.admin?import?User >>>?User.objects.all() >>>?u=User.objects.all() >>>?print?u.query SELECT?"auth_user"."id",?"auth_user"."password",?"auth_user"."last_login",?"auth_user"."is_superuser",?"auth_user"."username",?"auth_user"."first_name",?"auth_user"."last_name",?"auth_user"."email",?"auth_user"."is_staff",?"auth_user"."is_active",?"auth_user"."date_joined"?FROM?"auth_user"
在這里直接將查詢結果調用其query屬性就可以獲取其執(zhí)行的結果了,只是你提供的那種方式是不想手動進行這么繁瑣的操作而已