五月综合激情婷婷六月,日韩欧美国产一区不卡,他扒开我内裤强吻我下面视频 ,无套内射无矿码免费看黄,天天躁,日日躁,狠狠躁

新聞動(dòng)態(tài)

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

發(fā)布日期:2021-12-22 19:16 | 文章來(lái)源:gibhub

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

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

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

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

創(chuàng)建ORM模型:

ORM模型一般都是放在appmodels.py文件中。每個(gè)app都可以擁有自己的模型。并且如果這個(gè)模型想要映射到數(shù)據(jù)庫(kù)中,那么這個(gè)app必須要放在settings.pyINSTALLED_APP中進(jìn)行安裝。以下是寫一個(gè)簡(jiǎn)單的書籍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)

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

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

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

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

到此這篇關(guān)于Pycharm開發(fā)Django項(xiàng)目ORM模型介紹的文章就介紹到這了,更多相關(guān)Pycharm開發(fā)Django項(xiàng)目?jī)?nèi)容請(qǐng)搜索本站以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持本站!

版權(quán)聲明:本站文章來(lái)源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來(lái)源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來(lái)源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來(lái),僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。

相關(guān)文章

實(shí)時(shí)開通

自選配置、實(shí)時(shí)開通

免備案

全球線路精選!

全天候客戶服務(wù)

7x24全年不間斷在線

專屬顧問服務(wù)

1對(duì)1客戶咨詢顧問

在線
客服

在線客服:7*24小時(shí)在線

客服
熱線

400-630-3752
7*24小時(shí)客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部