国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

django的ORM模型的實現原理

2020-02-16 01:26:52
字體:
來源:轉載
供稿:網友

ORM模型介紹

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

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

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

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

創建ORM模型:

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

from django.db import modelsclass 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 。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 邻水| 江油市| 金平| 新疆| 绥宁县| 云南省| 伊川县| 潮州市| 阿坝| 丰城市| 雷州市| 滕州市| 博罗县| 航空| 双桥区| 新巴尔虎右旗| 正蓝旗| 理塘县| 广州市| 高平市| 五大连池市| 鲜城| 枣强县| 游戏| 木兰县| 星子县| 镇雄县| 陵水| 河东区| 额济纳旗| 松阳县| 英山县| 威海市| 闽清县| 朔州市| 酒泉市| 新闻| 分宜县| 宣城市| 内江市| 弋阳县|