トッカンソフトウェア

Python Django DB関連4

前回はDjangoのSELECTやりましたが、今回もSELECTをやります。

大なり小なり

大なり小なりを指定するには、filterの変数部分に__gt、__ltなどを指定します。以下は大なりの例です。
				
from django.http import HttpResponse
from hello.models import Tbl


def index(request):

    # WHERE int1 > 5 のような動作をする
    tbls = Tbl.objects.filter(int1__gt=5)

    s = ""
    for t in tbls:
        s += "<br />" + str(t.id) + ":" + t.txt1 + ":" + \
            str(t.int1) + ":" + str(t.dt1)

    return HttpResponse("data:" + s)

			
指定 動作
__gt 変数 > 条件値
__gte 変数 >= 条件値
__lt 変数 < 条件値
__lte 変数 <= 条件値

LIKE

LIKEを指定するには、filterの変数部分に__startswith、__endswithなどを指定します。
				
from django.http import HttpResponse
from hello.models import Tbl


def index(request):

    # WHERE txt1 LIKE '1%' を指定;
    tbls = Tbl.objects.filter(txt1__startswith="1")

    s = ""
    for t in tbls:
        s += "<br />" + str(t.id) + ":" + t.txt1 + ":" + \
            str(t.int1) + ":" + str(t.dt1)

    return HttpResponse("data:" + s)

			
指定 動作 大文字小文字
__startswith 変数 LIKE '条件値%' 区別する
__istartswith 変数 LIKE '条件値%' 区別しない
__endswith 変数 LIKE '%条件値' 区別する
__iendswith 変数 LIKE '%条件値' 区別しない
__contains 変数 LIKE '%条件値%' 区別する
__icontains 変数 LIKE '%条件値%' 区別しない

BETWEEN、IN

BETWEENを指定するには、filterの変数部分に__rangeを指定します。
INを指定するには、filterの変数部分に__inを指定します。
				
from django.http import HttpResponse
from hello.models import Tbl


def index(request):

    # WHERE int1 BETWEEN 5 AND 10
    tbls = Tbl.objects.filter(int1__range=(5, 10))

    # WHERE int1 IN (2, 3))
    tbls2 = Tbl.objects.filter(int1__in=[2, 3])
    s = ""
    for t in tbls:
        s += "<br />" + str(t.id) + ":" + t.txt1 + ":" + \
            str(t.int1) + ":" + str(t.dt1)
    for t in tbls2:
        s += "<br />" + str(t.id) + ":" + t.txt1 + ":" + \
            str(t.int1) + ":" + str(t.dt1)

    return HttpResponse("data:" + s)

			

IS NULL

IS NULLを指定するには、filterの変数部分に__isnullを指定します。
				
from django.http import HttpResponse
from hello.models import Tbl


def index(request):

    # WHERE txt1 IS NULL を指定;
    tbls = Tbl.objects.filter(txt1__isnull=True)

    s = ""
    for t in tbls:
        s += "<br />" + str(t.id) + ":" + t.txt1 + ":" + \
            str(t.int1) + ":" + str(t.dt1)

    return HttpResponse("data:" + s)
    

			

ページのトップへ戻る