創(chuàng)新互聯(lián)www.cdcxhl.cn八線動態(tài)BGP香港云服務(wù)器提供商,新人活動買多久送多久,劃算不套路!
創(chuàng)新互聯(lián)是創(chuàng)新、創(chuàng)意、研發(fā)型一體的綜合型網(wǎng)站建設(shè)公司,自成立以來公司不斷探索創(chuàng)新,始終堅持為客戶提供滿意周到的服務(wù),在本地打下了良好的口碑,在過去的10多年時間我們累計服務(wù)了上千家以及全國政企客戶,如成都發(fā)電機(jī)租賃等企業(yè)單位,完善的項目管理流程,嚴(yán)格把控項目進(jìn)度與質(zhì)量監(jiān)控加上過硬的技術(shù)實力獲得客戶的一致稱譽(yù)。這篇文章給大家分享的是有關(guān)django創(chuàng)建表的方法的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考。一起跟隨小編過來看看吧。
Django中,與數(shù)據(jù)庫相關(guān)的模塊是model模塊,它提供了一種簡單易操作的API方式與數(shù)據(jù)庫交互,它是通過ORM映射的方式來操作數(shù)據(jù)庫,一個類對應(yīng)數(shù)據(jù)庫一張表,一個類屬性,對應(yīng)該表的一個字段,一個實例化的類對象就是一個表中的一行數(shù)據(jù)信息。在開發(fā)的階段,工程師只需要python語言本身進(jìn)行代碼設(shè)計,而不用太過于分散注意力去操作SQL原生操作語句,這樣的方法既有它的優(yōu)點(diǎn),同樣也有不足之處。
它們優(yōu)缺點(diǎn)的大致如下:
優(yōu)點(diǎn):
1、實現(xiàn)了代碼與數(shù)據(jù)庫的解耦合
2、開發(fā)者不需要操作太多的原生SQL,可以提高開發(fā)效率
3、防止SQL注入,通過對象操作的方式,默認(rèn)就是防止SQL注入
缺點(diǎn):
1、犧牲性能,對象轉(zhuǎn)換到SQL會存在一定的消耗
2、當(dāng)需要操作較復(fù)雜的語句時,用ORM對象操作的方式很難實現(xiàn)
ORM與數(shù)據(jù)庫的映射關(guān)系如下:
表名--------》類名
字段--------》屬性
表記錄-----》類實例化對象
ORM的兩大主要功能:
操作表:
--創(chuàng)建表
--修改表
--刪除表
操作表數(shù)據(jù)行:增、刪、改、查
Django自帶的數(shù)據(jù)庫為sqlite3,如果需要使用其他數(shù)據(jù)庫,需要其他的準(zhǔn)備工作,并且,使用其他數(shù)據(jù)庫,需要自己提前建好數(shù)據(jù)庫,然后通過Django去連接,Django并不會創(chuàng)建數(shù)據(jù)庫。
完整過程:
一、編寫模型類
在Django項目的APP應(yīng)用下的models.py文件中編寫類,每一個類就是一個最終都會被映射為一個數(shù)據(jù)表。在寫類之前有個準(zhǔn)備工作,在settings.py文件中的“INSTALLED_APPS”要先加入自己的APP應(yīng)用,告訴Django有這個應(yīng)用。如圖:
表分為單表,一對一表,一對多表,多對多表,就是表一般不會獨(dú)立存在,總會與其他表存在聯(lián)系。我創(chuàng)建了三個表,一個表為Publish(出版社),一個表為Author(作者),還有一個表Book(書籍),其中表書籍與表出版社是外鍵關(guān)系,與作者是多對多的關(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) #一對多的關(guān)系。2.0django中,當(dāng)有主外鍵和其他對應(yīng)關(guān)系時,需要設(shè)置。 20 author = models.ManyToManyField("Author") 21 def __str__(self): 22 return self.title
二、生成數(shù)據(jù)表
創(chuàng)建類的代碼已經(jīng),寫好,此時需要兩句代碼將類轉(zhuǎn)換成對應(yīng)的數(shù)據(jù)表:
python manage.py makemigrations #將類轉(zhuǎn)換成數(shù)據(jù)表結(jié)構(gòu) python manage.py migrate #根據(jù)上一句代碼生成數(shù)據(jù)表
上面兩句代碼先后執(zhí)行,不出意外,就會在數(shù)據(jù)庫里面生成對應(yīng)的數(shù)據(jù)表。其中,第一句執(zhí)行完,會在app應(yīng)用下的migrations的文件夾下生成操作的記錄文件“0001_initial.py”:
這個是記錄models里面改動的執(zhí)行記錄。
最終生成的數(shù)據(jù)表如下:
感謝各位的閱讀!關(guān)于django創(chuàng)建表的方法就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
當(dāng)前名稱:django創(chuàng)建表的方法-創(chuàng)新互聯(lián)
網(wǎng)站鏈接:http://muchs.cn/article22/eejcc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、ChatGPT、微信公眾號、營銷型網(wǎng)站建設(shè)、電子商務(wù)、外貿(mào)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容