SQL and Django ORM
์ฐธ๊ณ ๋ฌธ์
Making queries | Django documentation | Django
QuerySet API reference | Django documentation | Django
Aggregation | Django documentation | Django
๊ธฐ๋ณธ ์ค๋น ์ฌํญ
django app
django_extensions
์ค์นusers
app ์์ฑcsv ํ์ผ์ ๋ง์ถฐ
models.py
์์ฑ ๋ฐ migrate
db.sqlite3
ํ์ฉ ๋ฐ ๋ฐ์ดํฐ ๋ฐ์sqlite3
์คํcsv ํ์ผ data ๋ก๋
ํ์ธ
sqlite3์์ ์คํค๋ง ํ์ธ
๋ฌธ์
์๋์ ๋ฌธ์ ๋ค์ sql๋ฌธ๊ณผ ๋์๋๋ orm์ ์์ฑ ํ์ธ์.
Table ์์ฑ
django
SQL
sql.sqlite3์ ๋์ผํ๊ฒ ํ ์ด๋ธ ์์ฑ
๊ธฐ๋ณธ CRUD ๋ก์ง
๋ชจ๋ user ๋ ์ฝ๋ ์กฐํ
user ๋ ์ฝ๋ ์์ฑ
ํ๋์ ๋ ์ฝ๋๋ฅผ ๋นผ๊ณ ์์ฑ ํ
NOT NULL
constraint ์ค๋ฅ๋ฅผ orm๊ณผ sql์์ ๋ชจ๋ ํ์ธ ํด๋ณด์ธ์.
ํด๋น user ๋ ์ฝ๋ ์กฐํ
get
์ query ๊ฒฐ๊ณผ๊ฐ ๋ฐ๋์ ํ๋์ฌ์ผ ํ๋ค. (์ด์ธ์๋ ๋ชจ๋ return error!)
SELECT * FROM users_user WHERE id = 100;
ํด๋น user ๋ ์ฝ๋ ์์
ํด๋น user ๋ ์ฝ๋ ์ญ์
์กฐ๊ฑด์ ๋ฐ๋ฅธ ์ฟผ๋ฆฌ๋ฌธ
์ ์ฒด ์ธ์ ์
๋์ด๊ฐ 30์ธ ์ฌ๋์ ์ด๋ฆ
๋์ด๊ฐ 30์ด ์ด์์ธ ์ฌ๋์ ์ธ์ ์
๋์๊ด๊ณ __gte : >=
__gt : >
__lte : <=
__lt : <
๋์ด๊ฐ 30์ด๋ฉด์ ์ฑ์ด ๊น์จ์ธ ์ฌ๋์ ์ธ์ ์
์ง์ญ๋ฒํธ๊ฐ 02์ธ ์ฌ๋์ ์ธ์ ์
๊ฑฐ์ฃผ ์ง์ญ์ด ๊ฐ์๋์ด๋ฉด์ ์ฑ์ด ํฉ์จ์ธ ์ฌ๋์ ์ด๋ฆ
์ ๋ ฌ ๋ฐ LIMIT, OFFSET
๋์ด๊ฐ ๋ง์ ์ฌ๋ 10๋ช
์์ก์ด ์ ์ ์ฌ๋ 10๋ช (์ค๋ฆ์ฐจ์)
์ฑ, ์ด๋ฆ ๋ด๋ฆผ์ฐจ์ ์์ผ๋ก 5๋ฒ์งธ ์๋ ์ฌ๋
ํํ์
ํํ์์ ์ํด์๋ aggregate ๋ฅผ ์์์ผํ๋ค.
์ ์ฒด ํ๊ท ๋์ด
๊น์จ์ ํ๊ท ๋์ด
๊ณ์ข ์์ก ์ค ๊ฐ์ฅ ๋์ ๊ฐ
๊ณ์ข ์์ก ์ด์ก
Group by
annotate๋ ๊ฐ๋ณ item์ ์ถ๊ฐ ํ๋๋ฅผ ๊ตฌ์ฑํ๋ค. ์ถํ 1:N ๊ด๊ณ์์ ํ์ฉ๋๋ค.
์ง์ญ๋ณ ์ธ์ ์
Last updated
Was this helpful?