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

Pycharm開發(fā)Django項目創(chuàng)建ORM模型的問題

 更新時間:2021年10月20日 10:47:07   作者:白日夢想家UUC  
ORM,全稱Object Relational Mapping,通過ORM我們可以通過類的方式去操作數(shù)據(jù)庫,而不用再寫原生的SQL語句,下面通過本文給大家介紹Pycharm開發(fā)Django項目ORM模型介紹,感興趣的朋友一起看看吧

隨著項目越來越大,采用寫原生SQL的方式在代碼中會出現(xiàn)大量的SQL語句,那么問題就出現(xiàn)了:

  1. SQL語句重復利用率不高,越復雜的SQL語句條件越多,代碼越長。會出現(xiàn)很多相近的SQL語句。
  2. 很多SQL語句是在業(yè)務邏輯中拼出來的,如果有數(shù)據(jù)庫需要更改,就要去修改這些邏輯,這會很容易漏掉對某些SQL語句的修改。
  3. 寫SQL時容易忽略web安全問題,給未來造成隱患。SQL注入。

ORM,全稱Object Relational Mapping,中文叫做對象關系映射,通過ORM我們可以通過類的方式去操作數(shù)據(jù)庫,而不用再寫原生的SQL語句。通過把表映射成類,把行作實例,把字段作為屬性,ORM在執(zhí)行對象操作的時候最終還是會把對應的操作轉換為數(shù)據(jù)庫原生語句。使用ORM有許多優(yōu)點:

  1. 易用性:使用ORM做數(shù)據(jù)庫的開發(fā)可以有效的減少重復SQL語句的概率,寫出來的模型也更加直觀、清晰。
  2. 性能損耗?。?code>ORM轉換成底層數(shù)據(jù)庫操作指令確實會有一些開銷。但從實際的情況來看,這種性能損耗很少(不足5%),只要不是對性能有嚴苛的要求,綜合考慮開發(fā)效率、代碼的閱讀性,帶來的好處要遠遠大于性能損耗,而且項目越大作用越明顯。
  3. 設計靈活:可以輕松的寫出復雜的查詢。
  4. 可移植性:Django封裝了底層的數(shù)據(jù)庫實現(xiàn),支持多個關系數(shù)據(jù)庫引擎,包括流行的MySQL、PostgreSQLSQLite??梢苑浅]p松的切換數(shù)據(jù)庫。

創(chuàng)建ORM模型:

ORM模型一般都是放在appmodels.py文件中。每個app都可以擁有自己的模型。并且如果這個模型想要映射到數(shù)據(jù)庫中,那么這個app必須要放在settings.pyINSTALLED_APP中進行安裝。以下是寫一個簡單的書籍ORM模型。示例代碼如下:

from django.db import models
class Book(models.Model):
    name = models.CharField(max_length=20,null=False)
    author = models.CharField(max_length=20,null=False)
    pub_time = models.DateTimeField(default=datetime.now)
    price = models.FloatField(default=0)

以上便定義了一個模型。這個模型繼承自django.db.models.Model,如果這個模型想要映射到數(shù)據(jù)庫中,就必須繼承自這個類。這個模型以后映射到數(shù)據(jù)庫中,表名是模型名稱的小寫形式,為book。在這個表中,有四個字段,一個為name,這個字段是保存的是書的名稱,是varchar類型,最長不能超過20個字符,并且不能為空。第二個字段是作者名字類型,同樣也是varchar類型,長度不能超過20個。第三個是出版時間,數(shù)據(jù)類型是datetime類型,默認是保存這本書籍的時間。第五個是這本書的價格,是浮點類型。
還有一個字段我們沒有寫,就是主鍵id,在django中,如果一個模型沒有定義主鍵,那么將會自動生成一個自動增長的int類型的主鍵,并且這個主鍵的名字就叫做id。

映射模型到數(shù)據(jù)庫中:

ORM模型映射到數(shù)據(jù)庫中,總結起來就是以下幾步:

  1. settings.py中,配置好DATABASES,做好數(shù)據(jù)庫相關的配置。
  2. app中的models.py中定義好模型,這個模型必須繼承自django.db.models
  3. 將這個app添加到settings.pyINSTALLED_APP中。
  4. 在命令行終端,進入到項目所在的路徑,然后執(zhí)行命令python manage.py makemigrations來生成遷移腳本文件。
  5. 同樣在命令行中,執(zhí)行命令python manage.py migrate來將遷移腳本文件映射到數(shù)據(jù)庫中。

到此這篇關于Pycharm開發(fā)Django項目ORM模型介紹的文章就介紹到這了,更多相關Pycharm開發(fā)Django項目內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 使用Python 統(tǒng)計文件夾內所有pdf頁數(shù)的小工具

    使用Python 統(tǒng)計文件夾內所有pdf頁數(shù)的小工具

    這篇文章主要介紹了Python 統(tǒng)計文件夾內所有pdf頁數(shù)的小工具,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • pyTorch深度學習多層感知機的實現(xiàn)

    pyTorch深度學習多層感知機的實現(xiàn)

    這篇文章主要為大家介紹了pyTorch深度學習多層感知機的實現(xiàn),文中附含詳細示例代碼,有需要的朋友可以借鑒參考下,希望能夠有所幫
    2021-09-09
  • python的reverse函數(shù)翻轉結果為None的問題

    python的reverse函數(shù)翻轉結果為None的問題

    這篇文章主要介紹了python的reverse函數(shù)翻轉結果為None的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • python畫微信表情符的實例代碼

    python畫微信表情符的實例代碼

    這篇文章主要介紹了python畫微信表情的實例代碼,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-10-10
  • Python面向對象之成員相關知識總結

    Python面向對象之成員相關知識總結

    通過面向對象進行編程時,會遇到很多種情況,也會使用不同的成員來實現(xiàn),接下來我們來逐一介紹成員特性和應用場景,需要的朋友可以參考下
    2021-06-06
  • Python如何使用EasyOCR工具識別圖像文本

    Python如何使用EasyOCR工具識別圖像文本

    EasyOCR?是?PyTorch?實現(xiàn)的一個光學字符識別?(OCR)?工具,這篇文章主要介紹了Python如何使用EasyOCR工具識別圖像文本,需要的朋友可以參考下
    2023-04-04
  • django富文本編輯器的實現(xiàn)示例

    django富文本編輯器的實現(xiàn)示例

    這篇文章主要介紹了django富文本編輯器的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • 用Python讀取幾十萬行文本數(shù)據(jù)

    用Python讀取幾十萬行文本數(shù)據(jù)

    今天小編就為大家分享一篇關于用Python讀取幾十萬行文本數(shù)據(jù),小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • Django ORM 查詢管理器源碼解析

    Django ORM 查詢管理器源碼解析

    這篇文章主要介紹了Django ORM 查詢管理器源碼解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-08-08
  • 在Pandas中使用透視表后去掉多級索引的方法

    在Pandas中使用透視表后去掉多級索引的方法

    Pandas是一個功能強大且通用的Python庫,用于數(shù)據(jù)操作和分析,它最有用的特性之一是數(shù)據(jù)透視表,它允許您重塑和匯總數(shù)據(jù),但是,使用數(shù)據(jù)透視表通常會導致多級(分層)索引,在本文中,我們將探討如何在Pandas中使用透視表后去掉多級索引,需要的朋友可以參考下
    2024-12-12

最新評論

方城县| 习水县| 共和县| 北碚区| 南京市| 夏河县| 增城市| 平武县| 陵川县| 武宣县| 石泉县| 屏东市| 固安县| 星子县| 祁东县| 特克斯县| 疏勒县| 瓦房店市| 济阳县| 保定市| 民丰县| 凌云县| 蓬安县| 肇东市| 灵璧县| 沧源| 铁岭市| 昌都县| 贵定县| 玉林市| 岱山县| 密云县| 临洮县| 宣恩县| 陕西省| 迁西县| 莱西市| 江永县| 西和县| 巍山| 司法|