TIL52. Django:ORMが実行する実際のSQL文を確認する方法


📌 本稿では、DjangoでORMを使用する場合、実際のSQL文としてこのORMを検証する方法についてまとめます.

🌈 ORMが実行する実際のSQL文を決定します。


🤔 実際のSQLクエリーの確認


次の勘定科目モデルがある場合、すべてのローのインポートにall()が使用されるとします.
from django.db import models
class Accounts(models.Model):
    username = models.CharField(max_length=50)
    email = models.EmailField(unique=True)
    password = models.CharField(max_length=100)
    phone_number = models.CharField(max_length=30)
    date_of_birth = models.DateField()
    created_at = models.DateTimeField(auto_now_add=True)
    modified_at = models.DateTimeField(auto_now=True)
    class Meta:
        db_table = "accounts"
✔¥まずはDjango Shellで確認してみます.
✔""""""""
>>> queryset = Account.object.all()
>>> str(queryset.query)
✔すぐこのORMのSQLでの構文を確認します.
実際のSQL文では246142も使用できますが、すべての列を友好的にリストしてSQL文を表示できます.
✔」今回は、フィルタ構文がSQL文をどのように適用しているかをチェックします.1989年以上生年月日のrowを呼びに行きます.
АААААААААААААА
>>> queryset = Accounts.objects.filter(date_of_birth__year__gte='1989')
✔querysetをこのquerysetに貼り付けてstrに変換します.
>>> str(queryset.query)