創(chuàng)新互聯(lián)www.cdcxhl.cn八線動(dòng)態(tài)BGP香港云服務(wù)器提供商,新人活動(dòng)買多久送多久,劃算不套路!
創(chuàng)新互聯(lián)建站成立與2013年,先為周口等服務(wù)建站,周口等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為周口企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。這篇文章主要介紹了django創(chuàng)建表格的方法,具有一定借鑒價(jià)值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。
Django中,與數(shù)據(jù)庫(kù)相關(guān)的模塊是model模塊,它提供了一種簡(jiǎn)單易操作的API方式與數(shù)據(jù)庫(kù)交互,它是通過(guò)ORM映射的方式來(lái)操作數(shù)據(jù)庫(kù),一個(gè)類對(duì)應(yīng)數(shù)據(jù)庫(kù)一張表,一個(gè)類屬性,對(duì)應(yīng)該表的一個(gè)字段,一個(gè)實(shí)例化的類對(duì)象就是一個(gè)表中的一行數(shù)據(jù)信息。在開(kāi)發(fā)的階段,工程師只需要python語(yǔ)言本身進(jìn)行代碼設(shè)計(jì),而不用太過(guò)于分散注意力去操作SQL原生操作語(yǔ)句,這樣的方法既有它的優(yōu)點(diǎn),同樣也有不足之處。
它們優(yōu)缺點(diǎn)的大致如下:
優(yōu)點(diǎn):
1、實(shí)現(xiàn)了代碼與數(shù)據(jù)庫(kù)的解耦合
2、開(kāi)發(fā)者不需要操作太多的原生SQL,可以提高開(kāi)發(fā)效率
3、防止SQL注入,通過(guò)對(duì)象操作的方式,默認(rèn)就是防止SQL注入
缺點(diǎn):
1、犧牲性能,對(duì)象轉(zhuǎn)換到SQL會(huì)存在一定的消耗
2、當(dāng)需要操作較復(fù)雜的語(yǔ)句時(shí),用ORM對(duì)象操作的方式很難實(shí)現(xiàn)
ORM與數(shù)據(jù)庫(kù)的映射關(guān)系如下:
表名--------》類名
字段--------》屬性
表記錄-----》類實(shí)例化對(duì)象
ORM的兩大主要功能:
操作表:
--創(chuàng)建表
--修改表
--刪除表
操作表數(shù)據(jù)行:增、刪、改、查
Django自帶的數(shù)據(jù)庫(kù)為sqlite3,如果需要使用其他數(shù)據(jù)庫(kù),需要其他的準(zhǔn)備工作,并且,使用其他數(shù)據(jù)庫(kù),需要自己提前建好數(shù)據(jù)庫(kù),然后通過(guò)Django去連接,Django并不會(huì)創(chuàng)建數(shù)據(jù)庫(kù)。
完整過(guò)程:
一、編寫(xiě)模型類
在Django項(xiàng)目的APP應(yīng)用下的models.py文件中編寫(xiě)類,每一個(gè)類就是一個(gè)最終都會(huì)被映射為一個(gè)數(shù)據(jù)表。在寫(xiě)類之前有個(gè)準(zhǔn)備工作,在settings.py文件中的“INSTALLED_APPS”要先加入自己的APP應(yīng)用,告訴Django有這個(gè)應(yīng)用。如圖:
表分為單表,一對(duì)一表,一對(duì)多表,多對(duì)多表,就是表一般不會(huì)獨(dú)立存在,總會(huì)與其他表存在聯(lián)系。我創(chuàng)建了三個(gè)表,一個(gè)表為Publish(出版社),一個(gè)表為Author(作者),還有一個(gè)表Book(書(shū)籍),其中表書(shū)籍與表出版社是外鍵關(guān)系,與作者是多對(duì)多的關(guān)系。
class Publish(models.Model): 2 name = models.CharField(max_length=64) 3 city = models.CharField(max_length=63,null=True) 4 def __str__(self): 5 return self.name 6 7 8 class Author(models.Model): 9 name = models.CharField(max_length=30) 10 sex = models.CharField(max_length=20) 11 def __str__(self): 12 return self.name 13 14 class Book(models.Model): 15 title = models.CharField(max_length=64) 16 price = models.IntegerField() 17 color = models.CharField(max_length=64) 18 page_num = models.IntegerField(null=True) 19 publisher = models.ForeignKey("Publish",on_delete=models.CASCADE,null=True) #一對(duì)多的關(guān)系。2.0django中,當(dāng)有主外鍵和其他對(duì)應(yīng)關(guān)系時(shí),需要設(shè)置。 20 author = models.ManyToManyField("Author") 21 def __str__(self): 22 return self.title
二、生成數(shù)據(jù)表
創(chuàng)建類的代碼已經(jīng),寫(xiě)好,此時(shí)需要兩句代碼將類轉(zhuǎn)換成對(duì)應(yīng)的數(shù)據(jù)表:
python manage.py makemigrations #將類轉(zhuǎn)換成數(shù)據(jù)表結(jié)構(gòu) python manage.py migrate #根據(jù)上一句代碼生成數(shù)據(jù)表
上面兩句代碼先后執(zhí)行,不出意外,就會(huì)在數(shù)據(jù)庫(kù)里面生成對(duì)應(yīng)的數(shù)據(jù)表。其中,第一句執(zhí)行完,會(huì)在app應(yīng)用下的migrations的文件夾下生成操作的記錄文件“0001_initial.py”:
這個(gè)是記錄models里面改動(dòng)的執(zhí)行記錄。
最終生成的數(shù)據(jù)表如下:
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享django創(chuàng)建表格的方法內(nèi)容對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道,遇到問(wèn)題就找創(chuàng)新互聯(lián),詳細(xì)的解決方法等著你來(lái)學(xué)習(xí)!