Database์์ ์ ๋ฌ๋ฐ์ ๊ฐ์ฒด๋ค์ ๋ชจ์(list)
Python์ผ๋ก ์์ฑํ ์ฝ๋๊ฐ SQL๋ก mapping๋์ด <QuerySet>
์ด๋ผ๋ ์๋ฃ ํํ๋ก ๊ฐ์ด ๋์ด์ค๊ฒ ๋๋ค.
table์ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐ(insert) ํด์ฃผ๋ method, ์์ฑ๋ ์ธ์คํด์ค ๋ฐํ
<class๋ช
>.objects.create()
Category.objects.create(name='์ฝ๋๋ธ๋ฃจ')
<Category: Category object (1)>
#category ๋ณ์์ ๋ฐํ๋ ๊ฐ์ ์ ์ฅํ๊ณ , ์์ฑ๋ data๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
#์ธ์คํด์ค๋ก ๋ฐํ๋๋ฏ๋ก category.name์ผ๋ก class ์์ ๋ณ์์ ์ ๊ทผํ ์ ์๋ค.
category = Category.objects.create(name='์ฝ๋๋ธ๋ฃจ')
category.name
'์ฝ๋๋ธ๋ฃจ'
์ง์ ๋ ์กฐํ ๋งค๊ฐ ๋ณ์์ ์ผ์นํ๋ ์ธ์คํด์ค ๋ฐํ, ์ด ๋งค๊ฐ ๋ณ์๋ ํ๋ ์กฐํ์ ์ค๋ช ๋ ํ์์ด์ด์ผ ํ๋ค.
Category.objects.get(id=1)
<Category: Category object (1)>
์ง์ ํ ํ๋์ ์ฟผ๋ฆฌ๋ฅผ ์
๋ฐ์ดํธ
name์ '์ฝ๋๋ธ๋ฃจ' ๊ฐ์ ๊ฐ์ง ๋ชจ๋ row๊ฐ update
๋๋ค.
Category.objects.filter(name='์ฝ๋๋ธ๋ฃจ').update(name='๋์ฒด ์ฝ๋๋ธ๋ฃจ')
2 # ์ด ์
๋ฐ์ดํธ ๋์ด ๋ฐํ๋ row์ ๊ฐ์
QuerySet์ ๋ชจ๋ ํ์ ๋ํด SQL ์ญ์
์ญ์ ๋ ๊ฐ์ฒด ์์ ๊ฐ์ฒด ์ ํ๋ณ ์ญ์ ํ์๊ฐ ์๋ dictionary
๋ฅผ ๋ฐํํ๋ค.
Category.objects.filter(name='๋์ฒด ์ฝ๋๋ธ๋ฃจ').delete()
(2, {'products.Category':1}) # (์ญ์ ๋ ๊ฐ์ฒด์, {์ญ์ ๋ ๊ฐ์ฒด ์ ํ:})
insert
๋๋ update
๋ฅผ ์ํํ๋ ๋ฉ์๋
๋จ์ผ ๊ฐ์ฒด์ ๋ํด ์
๋ฐ์ดํธํ ๋ ๋ง์ด ์ฐ์ธ๋ค.
category = Category.objects.get(id=2)
<Category: Category object (2)>
category.name
'๋ธ๋ฃจ๋์ปคํผ'
category.name = 'new name'
category.save()
category.name
'new name'
filter()
์ ํจ๊ป ์ฌ์ฉ,
filter ์กฐ๊ฑด์ ๋ง๋ ๋ฐ์ดํฐ๊ฐ ์๋์ง ์กฐํํ๋ค.
์กด์ฌ์ True, ์กด์ฌํ์ง ์์์ False๋ฅผ ๋ฐํ
Category.objects.filter(name='์ฝ๋๋ธ๋ฃจ').exists()
True
get_or_create()
bulk_create()
count()
first()
last()
aggreate()
<QuerySet [<"Class๋ช
": "Class๋ช
" object (1)>, <"Class๋ช
": "Class๋ช
"object (2)>]>
ํ ํ
์ด๋ธ์ ๋ชจ๋ ๋ ์ฝ๋๋ฅผ ๊ฐ์ ธ์จ๋ค.
๊ทธ ๊ฒฐ๊ณผ๋ก ๊ฐ๊ฐ์ ์ธ์คํด์ค๊ฐ ํฌํจ๋ QuerySet์ ๋ฐํ
Category.objects.all()
<QuerySet [<Category: Category object (2)>, <Category: Category object (3)>, <Category: Category object (4)>, <Category: Category object (5)>, <Category: Category object (6)>, <Category: Category object (7)>]>
for category in Category.objects.all()
print(category.name)
#์๋์ ๊ฐ์ด ์ธ์คํด์ค๋ค์ด ๋ด๊ฒจ ์๋ QuerySet์ด ๋ฐํ๋๊ธฐ ๋๋ฌธ์, ๋ชจ๋ ์์ฑ์ ์ ๊ทผํด์ ๋ฐ์ดํฐ ๊ด๋ฆฌ
#Output : ํฐ
๋ธ๋ฃจ๋์ปค๋ฆฌ
๋ธ๋ฃจ๋์ปคํผ
์ฝ๋๋ธ๋ฃจ
์ฝ๋๋ธ๋ฃจ
filter keyword
์ธ์๋ก ์ฃผ์ด์ง ์กฐ๊ฑด์ ์ผ์นํ๋ ๋ ์ฝ๋๋ค์ QuerySet์ ๋ฐํํ๋ค.
case1
Category.objects.filter(name='์ฝ๋๋ธ๋ฃจ')
[<Category: Category object (3)>, <Category: Category object (4)>]
case2
Category.objects.filter(name='์ฝ๋๋ธ๋ฃจ').filter(id=3)
[<Category: Category object (3)>]
case3
Category.objects.filter(name='์ฝ๋๋ธ๋ฃจ').exclude(id=3)
[<Category: Category object (4)>]
(iterable = ๋ฐ๋ณต ๊ฐ๋ฅํ ๊ฐ์ฒด)
๋ก ์ฌ์ฉ๋ ๋, model ์ธ์คํด์ค๊ฐ ์๋
dictionary
๋ฅผ ํฌํจํ๋ QuerySet ๋ฐํ
Category.objects.filter(name='์ฝ๋๋ธ๋ฃจ')
[<Category: Category object (3)>, <Category: Category object (4)>]
Category.objects.filter(name='์ฝ๋๋ธ๋ฃจ').values()
<QuerySet [{'id': 3, 'name': '์ฝ๋๋ธ๋ฃจ', 'created_at': datetime.datetime(2020, 9, 8, 5, 43, 30, 4068, tzinfo=<UTC>), 'updated_at': datetime.datetime(2020, 9, 8, 5, 43, 30, 21801, tzinfo=<UTC>)}, {'id': 4, 'name': '๋ธ๋ฃจ๋์ปคํผ', 'created_at': datetime.datetime(2020, 9, 8, 5, 43, 30, 4068, tzinfo=<UTC>), 'updated_at': datetime.datetime(2020, 9, 8, 5, 43, 30, 21801, tzinfo=<UTC>)}]>
values_list() method
๋ dictionary
๋ฅผ ๋ฐํํ๋ ๋์ ๋ฐ๋ณต ๋ ๋ ํํ์ ๋ฐํ
ํ๋ค๋ ์ ์ ์ ์ธํ๋ฉด values ()์ ๊ฐ๋ค.
Category.objects.filter(name='์ฝ๋๋ธ๋ฃจ').values_list()
<QuerySet [(3, '์ฝ๋๋ธ๋ฃจ', datetime.datetime(2020, 9, 8, 5, 43, 30, 4068, tzinfo=<UTC>), datetime.datetime(2020, 9, 8, 5, 43, 30, 21801, tzinfo=<UTC>)), (4, '์ฝ๋๋ธ๋ฃจ', datetime.datetime(2020, 9, 8, 5, 43, 30, 4068, tzinfo=<UTC>), datetime.datetime(2020, 9, 8, 5, 43, 30, 21801, tzinfo=<UTC>))]>