Django Custom Queries
ORM’ye çok alışkın değilim ve geçenlerde 3 4 tabloyu joinlemem gereken bir durum oldu. Bunun için Raw Sql Query yazmak istedim. Öncelikle Django Shell’i açıp test amaçlı bir kaç query yazdım fakat sürekli “relation does not exist” hatası aldım. Halbuki tablolar mevcuttu ve isimlerini yanlış yazmamıştım. Sonrasında düzeltmeye muvaffak oldum.
Şimdi Django içerisinde raw sql queryleri nasıl yazılır kısaca bahsetmeye çalışacağım.
Direkt shell ekranındaymış gibi yazıyorum ;
from django.db import connection cursor = connection.cursor() cursor.execute(‘'’select * from “Sales”’’’) row = cursor.fetchone() print(row)
OUTPUT :
(2, datetime.datetime(2018, 9, 10, 1, 32, 12, 922000, tzinfo=
Evet görüldüğü gibi öncelikle django.db içerisinden connection’ı import ediyoruz. Ardından bir cursor objesi oluşturup execute fonksiyonu içerisine query’yi yazıyoruz.
!!! ŞU ŞEKİLLERDE YAZDIĞIMDA AŞAĞIDAKİ ŞEKİLDE HATA ALDIM !!!
cursor.execute(‘select * from “Sales”’) django.db.utils.ProgrammingError: relation “sales” does not exist LINE 1: select * from Sales
Neticede 3 tırnakla yazdığımda ise doğru sonuç verdi. Saygılar.
!!! JOINLER !!! Örnek bir join query’si aşağıdadır. Genelde tırnaklara dikkat etmek gerekiyor.
cursor.execute(‘'’select “SL”.”CustomerName” from “Sales” as “SL” INNER JOIN “Personnels” as “PL” ON (“SL”.”PersonnelId” = “PL”.”user_id”);’’’)
Leave a comment