Django QuerySet 2 - Tirrilee/TechTalk GitHub Wiki
Overview
Ask Django์์ Query ์ถ๊ฐ/์์ /์ญ์ ๋ถ๋ถ์ ๊ณต๋ถํ ๋ด์ฉ์ ์ ๋ฆฌํ์์ต๋๋ค.
๋ฐ์ดํฐ ์์ฑํ๊ธฐ(Create)
๋ฐฉ๋ฒ 1) ๊ฐ Model Instance์ save ํจ์๋ฅผ ํตํด ์ ์ฅ
model_instance = ModelCls(ํ๋๋ช
1=๊ฐ1, ํ๋๋ช
2=๊ฐ2) # ์๋ก์ด ๋ชจ๋ธ Instance
print(model_instance.id) # ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ์ฅ ์ ์ด๋ฏ๋ก, None ๊ฐ์ ์ถ๋ ฅ
####### ๊ฒฐ๊ณผ๊ฐ #####
None
model_instance.save() # ๋ฐ์ดํฐ ๋ฒ ์ด์ค์ ์ ์ฅ์ ํ๋ค.
print(model_instance.id) # ์๋์ผ๋ก ํ ๋น๋ id๊ฐ์ ์ถ๋ ฅ
๋ฐฉ๋ฒ 2) ๊ฐ Model Manger์ create ํจ์๋ฅผ ํตํด ์ ์ฅ
model_instance = ModelCls.objects.create(ํ๋๋ช
1=๊ฐ1, ํ๋๋ช
2=๊ฐ2) # DB์ ์ ์ฅ
print(model_instance.id) # ์๋์ผ๋ก ํ ๋น๋ id๊ฐ์ ์ถ๋ ฅ
Tip : ๋ฐ์ดํฐ๋ฒ ์ด์ค์๋ INSERT SQL์ด ์ ๋ฌ
INSERT INTO ModelCls ('ํ๋๋ช
1', 'ํ๋๋ช
2') VALUES ('๊ฐ1', '๊ฐ2');
๋ฐ์ดํฐ ์์ ํ๊ธฐ(Update)
๋ฐฉ๋ฒ 1) ๊ฐ Model Instance ์์ฑ์ ๋ณ๊ฒฝํ๊ณ , save ํจ์๋ฅผ ํตํด ์ ์ฅ
- ๊ฐ Model Instance ๋ณ๋ก SQL ์ํ
- ๋ค์ Row์ ๋ํด์ ์ํ ์์๋ ์ฑ๋ฅ์ ํ๊ฐ ๋ฐ์ํ ์ ์์
instance = ModelCls.objects.get(id=1) # id๊ฐ 1์ธ Instance ํธ์ถ
instance.tags = 'Python, Django' # ํด๋น Instance์ tags ํ๋๋ช
๋ณํ
instance.save() # Instance ์ ์ฅ
๋ฐฉ๋ฒ 2) QuerySet์ update ํจ์์ ์ ๋ฐ์ดํธ ํ ์์ฑ๊ฐ์ ์ง์ ํ์ฌ ์ผ๊ด ์์
- ํ๋์ SQL๋ก ๋์ํ๋ฏ๋ก, ๋์์ด ๋น ๋ฅด๋ค.
queryset = ModelCls.objects.all()
queryset.update(tags="Python, Django") # ์ผ๊ด update ์์ฒญ
Tip : ๋ฐ์ดํฐ๋ฒ ์ด์ค์๋ UPDATE SQL์ด ์ ๋ฌ
UPDATE ModelCls SET tags='Python, Django';
๋ฐ์ดํฐ ์ญ์ ํ๊ธฐ(Delete)
๋ฐฉ๋ฒ 1) ๊ฐ Model Instance์ delete ํจ์๋ฅผ ํธ์ถํ์ฌ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ธก์ ๊ด๋ จ ๋ฐ์ดํฐ ์ญ์
- ๊ฐ Model Instance ๋ณ๋ก SQL ์ํ
- ๋ค์ Row์ ๋ํด์ ์ํ ์์๋ ์ฑ๋ฅ์ ํ๊ฐ ๋ฐ์ํ ์ ์์
instance = ModelCls.objects.get(id=1) # id๊ฐ 1์ธ Instance ํธ์ถ
instance.delete() # Instance ์ญ์
๋ฐฉ๋ฒ 2) QuerySet์ delete ํจ์๋ฅผ ํธ์ถํ์ฌ, ๊ด๋ จ ๋ฐ์ดํฐ๋ฅผ ์ญ์
- ํ๋์ SQL๋ก ๋์ํ๋ฏ๋ก, ๋์์ด ๋น ๋ฅด๋ค.
queryset = ModelCls.objects.all()
queryset.delete() # ์ผ๊ด delete ์์ฒญ
Tip : ๋ฐ์ดํฐ๋ฒ ์ด์ค์๋ DELETE SQL์ด ์ ๋ฌ
DELETE FROM ModelCls;
์น ์๋น์ค, ๊ฐ ์์ฒญ ๋ฐ์์๋์์์ ๋ณ๋ชฉ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค : ์์ฃผ ์ค์
- DB๋ก ์ ๋ฌ/์คํ๋๋ SQL ๊ฐฏ์๋ฅผ ์ค์ด๊ณ
- ๊ฐ SQL์ ์ฑ๋ฅ/์ฒ๋ฆฌ์๋ ์ต์ ํ๊ฐ ํ์
- ๋ก์ง์ ๋ณต์ก๋ : ์ค์
- ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ์ข ๋ฅ : ๋๊ฐ๋ ๋ฏธ๋ฏธ
django-debug-toolbar(๋๋ฒ๊น ๋ผ์ด๋ธ๋ฌ๋ฆฌ)
- ํ์ฌ request/response์ ๋ํ ๋ค์ํ ๋๋ฒ๊น ์ ๋ณด๋ฅผ ๋ณด์ฌ์ค๋๋ค.
- SQLPanel์ ํตํด ๊ฐ ์์ฒญ ์ฒ๋ฆฌ ์์ ๋ฐ์ํ SQL ๋ด์ญ ํ์ธ ๊ฐ๋ฅ
- ์น ์๋น์ค ์ฑ๋ฅ๊ณผ ์ง๊ฒฐ = ์๋ต์๋