Django raw SQL queries
๐ก django์์ SQL๋ฌธ์ผ๋ก ๊ฐ๋ฐํ๊ธฐ
์ค๋ django document๋ฅผ ์ฝ๋๋ฐ ์ฐ์ฐํ ๋ฐ๊ฒฌํ๊ฒ ๋๋ค.
Django์๋ raw()
manager๊ฐ ์๋ค. ์ด ๋ฉ์๋๋ฅผ ์ฌ์ฉํด์ ์ง์ ์ฟผ๋ฆฌ๋ฌธ์ ์์ฑํ ์ ์๋ค.
์ง์ ์ค์ต์ ์ํด์ djagno shell_plus์ ์ง์ ํ๋ค.
์ฟผ๋ฆฌ๋ฌธ ๋ด์์ ๋งค๊ฐ๋ณ์๋ฅผ ๋๊ฒจ์ค ๋๋ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์๋ค.
โ %s
์ฟผ๋ฆฌ๋ฌธ ์์ฑ์ WHERE ์ ์ ๋ค์ด๊ฐ ๊ฐ์ ๋ฆฌ์คํธ์ ๋ฃ์ด์ ๋๊ฒจ์ค๋ค.
โ %(key)s
๋ ๋ฒ์งธ ๋ฐฉ๋ฒ์ dict(ํค:๊ฐ) ํํ๋ก ๊ฐ์ ๋๊ฒจ์ฃผ๋ ๋ฐฉ๋ฒ์ด๋ค.
ํ๋์ ์ด๋ฆ์ ๋ค๋ฅธ ์ด๋ฆ์ผ๋ก ๋ถ๋ฌ์ผ ํ ๊ฒฝ์ฐ ์๋์ ๊ฐ์ด ์์ฑํ๋ค๊ณ ํ๋ค.
# CASE1
Person.objects.raw(
'''
SELECT first AS first_name,
last AS last_name,
bd AS birth_date,
pk AS id,
FROM some_other_table
'''
)
# CASE2
name_map = {
'first': 'first_name',
'last': 'last_name',
'bd': 'birth_date',
'pk': 'id'
}
Person.objects.raw(
'SELECT * FROM some_other_table',
translations=name_map
)