1. 程式人生 > 程式設計 >Django ORM 查詢表中某列欄位值的方法

Django ORM 查詢表中某列欄位值的方法

1.什麼是ORM

  • ORM全拼Object-Relation Mapping.
  • 中文意為物件-關係對映.
  • 在MVC/MVT設計模式中的Model模組中都包括ORM

2.ORM優勢

(1)只需要面向物件程式設計,不需要面向資料庫編寫程式碼.

  • 對資料庫的操作都轉化成對類屬性和方法的操作.
  • 不用編寫各種資料庫的sql語句.

(2)實現了資料模型與資料庫的解耦,遮蔽了不同資料庫操作上的差異.

  • 不在關注用的是mysql、oracle...等.
  • 通過簡單的配置就可以輕鬆更換資料庫,而不需要修改程式碼.

3.ORM劣勢

相比較直接使用SQL語句操作資料庫,有效能損失.
根據物件的操作轉換成SQL語句,根據查詢的結果轉化成物件,在對映過程中有效能損失.

下面看下Django ORM 查詢表中某列欄位值,詳情如下:

場景:

有一個表中的某一列,你需要獲取到這一列的所有值,你怎麼操作?

解決辦法:

有一個model為:Event

方式一:

獲取內容:
Event.objects.values('title')

輸出內容:
<QuerySet [{'title': '測試feed'},{'title': '今天'},{'title': '第三個日程測試'},{'title': '第四個日程測試'},{'title': '第五個測試日程'}]>

方式一獲取到的是一個QuerySet,內容是鍵值對構成的,鍵為表的列名,值為對應的每個值。

方式二:

獲取內容:
Event.objects.values_list('title')

輸出內容:
<QuerySet [('測試feed',),('今天',('第三個日程測試',('第四個日程測試',('第五個測試日程',)]>

方式二獲取到的也是一個QuerySet,但是內容是元祖形式的查詢列的值。

但是我們想要的是這一列的值呀,這怎麼是一個QuerySet,而且還包含了列名,或者是被包含在了元祖中?

檢視高階用法,告訴你怎麼獲取一個值的list,如:

['測試feed','今天','第三個日程測試','第四個日程測試','第五個測試日程']

到此這篇關於Django ORM 查詢表中某列欄位值的文章就介紹到這了,更多相關django orm 欄位值內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!