我很新的Python和我所看到的,這兩個什麼時候應該在Django中使用objects.raw()?
Entries.objects.raw("SELECT * FROM register_entries")
和
Entries.objects.filter()
做同樣的查詢。
在哪種情況下最好使用其中一種?
我很新的Python和我所看到的,這兩個什麼時候應該在Django中使用objects.raw()?
Entries.objects.raw("SELECT * FROM register_entries")
和
Entries.objects.filter()
做同樣的查詢。
在哪種情況下最好使用其中一種?
它取決於您正在使用的數據庫後端。第一種假設你有一個基於SQL的數據庫引擎。這並非總是如此。相反,第二個將在任何情況下工作(如果後端是專門設計的)。例如幾年前有一個LDAP後端被設計成這樣,但LDAP查詢根本不使用SQL語言。
在所有情況下,我建議你到使用第二個。如果要製作可重複使用的長期代碼,這是更好的方法。
也有其他的想法更喜歡第二個到第一個
但有時你將不得不使用的第一個,當你做特定的操作(調用特定後端的功能),但避免他們儘可能。
簡而言之,請使用第二個!
從Django中documentation:
當模型查詢API的還遠遠不夠,你可以回落到撰寫原始SQL
對於所有方面,Django的查詢集API可以幫助您很多選項來自定義您的查詢。但是在某些情況下,您需要使用非常具體的查詢,而django api變得不足。但在使用原始SQL之前,最好閱讀所有Queryset Api文檔並瞭解有關django queryset api的所有內容。