最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Django ORM filter() 的運(yùn)用詳解

 更新時(shí)間:2020年05月14日 14:40:31   作者:weixin_42402500  
這篇文章主要介紹了Django ORM filter() 的運(yùn)用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧

最近發(fā)布代碼的時(shí)候,遇到一個(gè)問題,發(fā)現(xiàn)Python中eval()函數(shù)的危險(xiǎn)性.然而我還是個(gè)菜鳥,其中有一段代碼是這樣的。

queryset = eval("models.TUserInfo.objects.filter({0})[{1}:{2}]".format(select,page_num * page - page_num,page_num * page))

代碼場景:

這是一個(gè)獲取信息的API.所以需要去數(shù)據(jù)庫里取對(duì)應(yīng)信息,但是你不知道獲取信息是根據(jù)哪幾個(gè)字段而來,需要靠用戶傳入,在這里eval()函數(shù)就提供給某些人員很好的入侵性.所以用了另外一種方式去改良代碼.

filter(**kwargs): 它包含了與所給篩選條件相匹配的對(duì)象

條件查詢

條件可以是:參數(shù),字典,Q

  def filter(self, *args, **kwargs):
    """
    Returns a new QuerySet instance with the args ANDed to the existing
    set.
    """
    return self._filter_or_exclude(False, *args, **kwargs)

于是乎,便改用了字典傳值的方式.避免了先將代碼字符串化,然后在將其代碼化。

用**dict調(diào)用,dict必須是一個(gè)字典。

queryset = models.TUserInfo.objects.filter(**field_dict)[page_num * page - page_num:page_num * page]

因?yàn)闆]有想到用其它方式來運(yùn)用orm,所以有些新奇,用字典傳值也不失為一種良好運(yùn)用。

補(bǔ)充知識(shí):django orm查詢中filter與get的區(qū)別

輸入?yún)?shù):

get的參數(shù)只能是model中定義的哪些字段,只支持嚴(yán)格匹配

filter的參數(shù)可以是字段也可以是擴(kuò)展的where查詢關(guān)鍵字,如in,like

返回值:

get返回值是一個(gè)定義的model對(duì)象

filter返回值是一個(gè)新的QuerySet對(duì)象,然后可以對(duì)QuerySet在進(jìn)行查詢返回新的QuerySet對(duì)象,支持鏈?zhǔn)讲僮?,QuerySet一個(gè)集合對(duì)象,可使用迭代或者遍歷,切片等,但是不等于list類型(是一個(gè)object對(duì)象集合)

異常:

get只有一條記錄返回的時(shí)候才正常,也就是說明get查詢字段必須是主鍵或者唯一約束的字段。當(dāng)返回多條記錄或者沒有找到記錄的時(shí)候都會(huì)拋出異常

get方法是從數(shù)據(jù)庫的取得一個(gè)匹配的結(jié)果,返回一個(gè)對(duì)象,如果記錄不存在的話,它會(huì)報(bào)錯(cuò),有多條記錄也會(huì)報(bào)錯(cuò)。

filter有沒有匹配的記錄都可以

filter方法是從數(shù)據(jù)庫的取得匹配的結(jié)果,返回一個(gè)對(duì)象列表,如果記錄不存在的話,它會(huì)返回[]。

另外,從別的資料里看到filter好像有緩存數(shù)據(jù)的功能,第一次查詢數(shù)據(jù)庫并生成緩存,下次再調(diào)用filter方法的話,直接取得緩存的數(shù)據(jù),會(huì)get方法每次執(zhí)行都是直接查詢數(shù)據(jù)庫的,不知道這個(gè)是不是正確,看看就好。

以上這篇Django ORM filter() 的運(yùn)用詳解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 基于 Python實(shí)現(xiàn)云服務(wù)器的CDN域名遠(yuǎn)程鑒權(quán)配置

    基于 Python實(shí)現(xiàn)云服務(wù)器的CDN域名遠(yuǎn)程鑒權(quán)配置

    這篇文章主要介紹了基于 Python實(shí)現(xiàn)云服務(wù)器的CDN域名遠(yuǎn)程鑒權(quán)配置,文章內(nèi)容技術(shù)詳細(xì),具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-05-05
  • 基于Python socket的端口掃描程序?qū)嵗a

    基于Python socket的端口掃描程序?qū)嵗a

    這篇文章主要介紹了基于Python socket的端口掃描程序?qū)嵗a,分享了相關(guān)代碼示例,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-02-02
  • 通過Python實(shí)現(xiàn)控制手機(jī)詳解

    通過Python實(shí)現(xiàn)控制手機(jī)詳解

    如今python是非常多人學(xué)習(xí)的,而手機(jī)也幾乎人手一部。對(duì)于很多Python學(xué)習(xí)者,想用python來完成android手機(jī)中各種炫酷的的控制,adb是必不可缺少的工具之一
    2021-10-10
  • python3+PyQt5實(shí)現(xiàn)拖放功能

    python3+PyQt5實(shí)現(xiàn)拖放功能

    這篇文章主要為大家詳細(xì)介紹了python3+PyQt5實(shí)現(xiàn)拖放功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • Python識(shí)別驗(yàn)證碼的實(shí)現(xiàn)示例

    Python識(shí)別驗(yàn)證碼的實(shí)現(xiàn)示例

    這篇文章主要介紹了Python識(shí)別驗(yàn)證碼的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Python轉(zhuǎn)換時(shí)間的圖文方法

    Python轉(zhuǎn)換時(shí)間的圖文方法

    在本篇文章里小編給大家整理的是關(guān)于Python轉(zhuǎn)換時(shí)間的方法以及具體步驟流程,需要的朋友們參考下。
    2019-07-07
  • 調(diào)試Django時(shí)打印SQL語句的日志代碼實(shí)例

    調(diào)試Django時(shí)打印SQL語句的日志代碼實(shí)例

    這篇文章主要介紹了調(diào)試Django時(shí)打印SQL語句的日志代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • Python設(shè)計(jì)模式之橋接模式原理與用法實(shí)例分析

    Python設(shè)計(jì)模式之橋接模式原理與用法實(shí)例分析

    這篇文章主要介紹了Python設(shè)計(jì)模式之橋接模式原理與用法,結(jié)合具體實(shí)例形式分析了Python橋接模式的相關(guān)概念、原理、定義及使用方法,需要的朋友可以參考下
    2019-01-01
  • Python Pillow.Image 圖像保存和參數(shù)選擇方式

    Python Pillow.Image 圖像保存和參數(shù)選擇方式

    今天小編就為大家分享一篇Python Pillow.Image 圖像保存和參數(shù)選擇方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • Pandas缺失值2種處理方式代碼實(shí)例

    Pandas缺失值2種處理方式代碼實(shí)例

    這篇文章主要介紹了Pandas缺失值2種處理方式代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06

最新評(píng)論

武安市| 杨浦区| 台东县| 鄂温| 长春市| 社旗县| 慈利县| 南充市| 广宁县| 潜江市| 洞口县| 太保市| 新郑市| 襄汾县| 始兴县| 顺平县| 万州区| 雷山县| 平定县| 台前县| 威宁| 繁昌县| 广灵县| 突泉县| 威信县| 扎鲁特旗| 南宁市| 巴中市| 合江县| 三门峡市| 汉沽区| 肇东市| 塔河县| 白山市| 石首市| 安丘市| 启东市| 西乡县| 七台河市| 瑞安市| 东海县|