最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

Pycharm開(kāi)發(fā)Django的ORM模型介紹

2021-10-07 10:54 作者:app毒  | 我要投稿

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

SQL語(yǔ)句重復(fù)利用率不高,越復(fù)雜的SQL語(yǔ)句條件越多,代碼越長(zhǎng)。會(huì)出現(xiàn)很多相近的SQL語(yǔ)句。


很多SQL語(yǔ)句是在業(yè)務(wù)邏輯中拼出來(lái)的,如果有數(shù)據(jù)庫(kù)需要更改,就要去修改這些邏輯,這會(huì)很容易漏掉對(duì)某些SQL語(yǔ)句的修改。


寫(xiě)SQL時(shí)容易忽略web安全問(wèn)題,給未來(lái)造成隱患。SQL注入。

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

易用性:使用ORM做數(shù)據(jù)庫(kù)的開(kāi)發(fā)可以有效的減少重復(fù)SQL語(yǔ)句的概率,寫(xiě)出來(lái)的模型也更加直觀、清晰。


性能損耗?。篛RM轉(zhuǎn)換成底層數(shù)據(jù)庫(kù)操作指令確實(shí)會(huì)有一些開(kāi)銷(xiāo)。但從實(shí)際的情況來(lái)看,這種性能損耗很少(不足5%),只要不是對(duì)性能有嚴(yán)苛的要求,綜合考慮開(kāi)發(fā)效率、代碼的閱讀性,帶來(lái)的好處要遠(yuǎn)遠(yuǎn)大于性能損耗,而且項(xiàng)目越大作用越明顯。


設(shè)計(jì)靈活:可以輕松的寫(xiě)出復(fù)雜的查詢(xún)。


可移植性:Django封裝了底層的數(shù)據(jù)庫(kù)實(shí)現(xiàn),支持多個(gè)關(guān)系數(shù)據(jù)庫(kù)引擎,包括流行的MySQL、PostgreSQL和SQLite??梢苑浅]p松的切換數(shù)據(jù)庫(kù)。

創(chuàng)建ORM模型:ORM模型一般都是放在APP的models.py文件中。每個(gè)APP都可以擁有自己的模型。并且如果這個(gè)模型想要映射到數(shù)據(jù)庫(kù)中,那么這個(gè)APP必須要放在settings.py的INSTALLED_APP中進(jìn)行安裝。以下是寫(xiě)一個(gè)簡(jiǎn)單的書(shū)籍ORM模型。示例代碼如下:fromdjango.dbimportmodelsclassBook(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è)類(lèi)。這個(gè)模型以后映射到數(shù)據(jù)庫(kù)中,表名是模型名稱(chēng)的小寫(xiě)形式,為book。在這個(gè)表中,有四個(gè)字段,一個(gè)為name,這個(gè)字段是保存的是書(shū)的名稱(chēng),是varchar類(lèi)型,最長(zhǎng)不能超過(guò)20個(gè)字符,并且不能為空。第二個(gè)字段是作者名字類(lèi)型,同樣也是varchar類(lèi)型,長(zhǎng)度不能超過(guò)20個(gè)。第三個(gè)是出版時(shí)間,數(shù)據(jù)類(lèi)型是datetime類(lèi)型,默認(rèn)是保存這本書(shū)籍的時(shí)間。第五個(gè)是這本書(shū)的價(jià)格,是浮點(diǎn)類(lèi)型。

還有一個(gè)字段我們沒(méi)有寫(xiě),就是主鍵id,在django中,如果一個(gè)模型沒(méi)有定義主鍵,那么將會(huì)自動(dòng)生成一個(gè)自動(dòng)增長(zhǎng)的int類(lèi)型的主鍵,并且這個(gè)主鍵的名字就叫做id。映射模型到數(shù)據(jù)庫(kù)中:將ORM模型映射到數(shù)據(jù)庫(kù)中,總結(jié)起來(lái)就是以下幾步:

在settings.py中,配置好DATABASES,做好數(shù)據(jù)庫(kù)相關(guān)的配置。


在APP中的models.py中定義好模型,這個(gè)模型必須繼承自django.db.models。


將這個(gè)APP添加到settings.py的INSTALLED_APP中。


在命令行終端,進(jìn)入到項(xiàng)目所在的路徑,然后執(zhí)行命令python manage.py makemigrations來(lái)生成遷移腳本文件。


同樣在命令行中,執(zhí)行命令python manage.py migrate來(lái)將遷移腳本文件映射到數(shù)據(jù)庫(kù)中。


Pycharm開(kāi)發(fā)Django的ORM模型介紹的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
淮北市| 宁乡县| 恭城| 甘洛县| 大庆市| 巧家县| 柳林县| 巨鹿县| 晋宁县| 卢龙县| 绍兴县| 红安县| 合阳县| 苗栗县| 蓬溪县| 桦甸市| 秀山| 花垣县| 土默特左旗| 九龙县| 普兰店市| 肇源县| 南通市| 岑巩县| 淅川县| 德格县| 法库县| 牙克石市| 平利县| 江城| 宝清县| 昌图县| 肥东县| 铁岭市| 小金县| 大余县| 旺苍县| 汾阳市| 屏山县| 绥芬河市| 泸州市|