溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Django ORM如何查詢表中某列字段值

發(fā)布時(shí)間:2020-07-29 11:16:50 來源:億速云 閱讀:284 作者:小豬 欄目:開發(fā)技術(shù)

小編這次要給大家分享的是Django ORM如何查詢表中某列字段值,文章內(nèi)容豐富,感興趣的小伙伴可以來了解一下,希望大家閱讀完這篇文章之后能夠有所收獲。

1.什么是ORM

  • ORM 全拼Object-Relation Mapping.
  • 中文意為 對(duì)象-關(guān)系映射.
  • 在MVC/MVT設(shè)計(jì)模式中的Model模塊中都包括ORM

2.ORM優(yōu)勢

(1)只需要面向?qū)ο缶幊? 不需要面向數(shù)據(jù)庫編寫代碼.

  • 對(duì)數(shù)據(jù)庫的操作都轉(zhuǎn)化成對(duì)類屬性和方法的操作.
  • 不用編寫各種數(shù)據(jù)庫的sql語句.

(2)實(shí)現(xiàn)了數(shù)據(jù)模型與數(shù)據(jù)庫的解耦, 屏蔽了不同數(shù)據(jù)庫操作上的差異.

  • 不在關(guān)注用的是mysql、oracle...等.
  • 通過簡單的配置就可以輕松更換數(shù)據(jù)庫, 而不需要修改代碼.

3.ORM劣勢

相比較直接使用SQL語句操作數(shù)據(jù)庫,有性能損失.
根據(jù)對(duì)象的操作轉(zhuǎn)換成SQL語句,根據(jù)查詢的結(jié)果轉(zhuǎn)化成對(duì)象, 在映射過程中有性能損失.

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

場景:

有一個(gè)表中的某一列,你需要獲取到這一列的所有值,你怎么操作?

解決辦法:

有一個(gè)model為:Event

方式一:

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

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

方式一獲取到的是一個(gè)QuerySet,內(nèi)容是鍵值對(duì)構(gòu)成的,鍵為表的列名,值為對(duì)應(yīng)的每個(gè)值。

方式二:

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

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

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

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

查看高階用法,告訴你怎么獲取一個(gè)值的list,如:

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

看完這篇關(guān)于Django ORM如何查詢表中某列字段值的文章,如果覺得文章內(nèi)容寫得不錯(cuò)的話,可以把它分享出去給更多人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI