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)
ページのトップへ戻る