欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

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

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

創(chuàng)建ORM模型:

ORM模型一般都是放在appmodels.py文件中。每個app都可以擁有自己的模型。并且如果這個模型想要映射到數據庫中,那么這個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,如果這個模型想要映射到數據庫中,就必須繼承自這個類。這個模型以后映射到數據庫中,表名是模型名稱的小寫形式,為book。在這個表中,有四個字段,一個為name,這個字段是保存的是書的名稱,是varchar類型,最長不能超過20個字符,并且不能為空。第二個字段是作者名字類型,同樣也是varchar類型,長度不能超過20個。第三個是出版時間,數據類型是datetime類型,默認是保存這本書籍的時間。第五個是這本書的價格,是浮點類型。
還有一個字段我們沒有寫,就是主鍵id,在django中,如果一個模型沒有定義主鍵,那么將會自動生成一個自動增長的int類型的主鍵,并且這個主鍵的名字就叫做id。

映射模型到數據庫中:

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

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

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

相關文章

  • Python機器學習之KNN近鄰算法

    Python機器學習之KNN近鄰算法

    KNN可以說是最簡單的分類算法之一,同時,它也是最常用的分類算法,文中非常詳細的介紹了該算法,對正在學習python的小伙伴們有很好的幫助,需要的朋友可以參考下
    2021-05-05
  • Python中的numpy數組維度擴展詳解

    Python中的numpy數組維度擴展詳解

    這篇文章主要介紹了Python中的numpy數組維度擴展詳解,在numpy數組中,切片功能非常常用,例如x[:]表示取x的所有元素,可以通過在切片中增加None或者np.newaxis實現,它們的作用就是在相應的位置上增加一個維度,在這個維度上只有一個元素,需要的朋友可以參考下
    2023-09-09
  • 使用Node.js和Socket.IO擴展Django的實時處理功能

    使用Node.js和Socket.IO擴展Django的實時處理功能

    這篇文章主要介紹了使用Node.js和Socket.IO擴展Django的實時處理功能,用異步處理實時功能是相當強大的,文中給出的例子是建立一個實時聊天室,需要的朋友可以參考下
    2015-04-04
  • Python PyQt5實戰(zhàn)項目之查詢器的實現流程詳解

    Python PyQt5實戰(zhàn)項目之查詢器的實現流程詳解

    PyQt5以一套Python模塊的形式來實現功能。它包含了超過620個類,600個方法和函數。它是一個多平臺的工具套件,它可以運行在所有的主流操作系統(tǒng)中,包含Unix,Windows和Mac OS。PyQt5采用雙重許可模式。開發(fā)者可以在GPL和社區(qū)授權之間選擇
    2021-11-11
  • 對python自動生成接口測試的示例講解

    對python自動生成接口測試的示例講解

    今天小編就為大家分享一篇對python自動生成接口測試的示例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • python獲取當前時間對應unix時間戳的方法

    python獲取當前時間對應unix時間戳的方法

    這篇文章主要介紹了python獲取當前時間對應unix時間戳的方法,涉及Python時間操作的相關技巧,非常簡單實用,需要的朋友可以參考下
    2015-05-05
  • 使用Streamlit和Pandas實現帶有可點擊鏈接的數據表格

    使用Streamlit和Pandas實現帶有可點擊鏈接的數據表格

    這篇文章主要為大家詳細介紹了如何利用?Streamlit?和?Pandas?在?Python?中創(chuàng)建一個帶有可點擊鏈接的數據表格,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-11-11
  • 怎么快速自學python

    怎么快速自學python

    在本篇文章里小編給大家分享的是一篇關于怎么快速自學python的相關內容,有興趣的朋友們可以學習參考下。
    2020-06-06
  • python?包實現?time?時間管理操作

    python?包實現?time?時間管理操作

    這篇文章主要介紹了python包實現time時間管理操作,文章通過獲取當前時間戳,即當前系統(tǒng)內表示時間的一個浮點數,下文更多相關內容需要的小伙伴可以參考一下
    2022-04-04
  • Python利用networkx畫圖繪制Les?Misérables人物關系

    Python利用networkx畫圖繪制Les?Misérables人物關系

    這篇文章主要為大家介紹了Python利用networkx畫圖處理繪制Les?Misérables悲慘世界里的人物關系圖,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05

最新評論