django 刪除數(shù)據(jù)庫(kù)表后重新同步的方法
由于項(xiàng)目需要,最近在用基于Python語(yǔ)言的一個(gè)后端框架Django開(kāi)發(fā)web應(yīng)用。不得不說(shuō),Django繼承了Python的簡(jiǎn)潔性,用它來(lái)開(kāi)發(fā)web應(yīng)用簡(jiǎn)單清爽,不同于從前的SSH框架,需要單獨(dú)配置每個(gè)框架,還需要通過(guò)配置將各個(gè)框架集合起來(lái),Django就集成了SSH三個(gè)框架的功能,只需要配置好這一個(gè)框架,整個(gè)后端開(kāi)發(fā)流程全部可以完成,并且配置過(guò)程簡(jiǎn)單易學(xué),這就大大降低了程序員的使用復(fù)雜度,可以將更多的精力集中于寫(xiě)出好的代碼,而不是糾結(jié)于工具的使用。
閑言少敘,現(xiàn)在就來(lái)說(shuō)一說(shuō)我遇到的問(wèn)題和解決方案。
我們都知道Django提供了ORM的功能,可以通過(guò)操作代碼中的類(lèi)直接創(chuàng)建數(shù)據(jù)庫(kù)表以及進(jìn)行增刪改查。但是在開(kāi)發(fā)過(guò)程中,由于數(shù)據(jù)庫(kù)表的重新設(shè)計(jì),需要?jiǎng)h除原表,并通過(guò)Django的ORM功能重新同步表。
同步命令如下:
python manage.py makemigrations
python manage.py migrate
但是在我輸入命令之后報(bào)錯(cuò)了:
提示說(shuō)我新增的字段沒(méi)有默認(rèn)值(我對(duì)數(shù)據(jù)庫(kù)表的修改就是增加了一個(gè)字段),然后我去百度,在stackoverflow上找到了答案,在該字段后增加一個(gè)默認(rèn)值即可。但是明顯這個(gè)答案沒(méi)有找到我遇到問(wèn)題的真正原因,因?yàn)檫@樣做第一條命令成功執(zhí)行,但是到第二條時(shí)就直接報(bào)錯(cuò)。
然后我又去百度,有人建議看一下框架自動(dòng)生成的initial文件,該文件在當(dāng)前app下的migrations目錄下,打開(kāi)后發(fā)現(xiàn)該文件內(nèi)容和原表對(duì)應(yīng),也就是并沒(méi)有更新,問(wèn)題可能就在這了。于是我按照建議刪除了這個(gè)文件重新生成。
刪除文件之后重新執(zhí)行命令,這次確實(shí)生成了新的initial文件,內(nèi)容也已經(jīng)更新,但是執(zhí)行第二條命令時(shí)還是出了問(wèn)題,查看數(shù)據(jù)庫(kù),空空如也,沒(méi)有產(chǎn)生新表。崩潰。
然后又去百度,找相關(guān)問(wèn)題看,看到另外一條命令:
python manage.py sqlmigrate your_app_name 0001
把your_app_name換成自己的app名字即可看到框架自動(dòng)生成的創(chuàng)建表sql語(yǔ)句,于是我就這樣看到了sql語(yǔ)句。我直接在數(shù)據(jù)庫(kù)中執(zhí)行了該句sql命令手動(dòng)創(chuàng)建了表,再啟動(dòng)應(yīng)用,可以正常啟動(dòng),問(wèn)題解決。
雖然這個(gè)方法有些取巧吧,似乎還是沒(méi)有解釋問(wèn)題的癥結(jié)所在,但好在很實(shí)用地解決了問(wèn)題。
以上這篇django 刪除數(shù)據(jù)庫(kù)表后重新同步的方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python Numpy庫(kù)常見(jiàn)用法入門(mén)教程
這篇文章主要介紹了Python Numpy庫(kù)常見(jiàn)用法,結(jié)合實(shí)例形式詳細(xì)Fenix了Python numpy庫(kù)基本功能、原理以及數(shù)組常見(jiàn)操作技巧,需要的朋友可以參考下2020-01-01基于anaconda下強(qiáng)大的conda命令介紹
今天小編就為大家分享一篇基于anaconda下強(qiáng)大的conda命令介紹,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-06-06Windows 平臺(tái)做 Python 開(kāi)發(fā)的最佳組合(推薦)
在 Windows 上如何做 Python 開(kāi)發(fā)呢?相信大神們都會(huì)有自己的解決方案,但本文希望介紹微軟官方發(fā)布的 Terminal 和 Visual Studio Code,希望它們能構(gòu)建更流暢的 Windows 開(kāi)發(fā)體驗(yàn),感興趣的朋友跟隨小編一起看看吧2020-07-07詳解Python實(shí)現(xiàn)圖像分割增強(qiáng)的兩種方法
圖像分割就是把圖像分成若干個(gè)特定的、具有獨(dú)特性質(zhì)的區(qū)域并提出感興趣目標(biāo)的技術(shù)和過(guò)程。本文將為大家分享兩個(gè)用Python實(shí)現(xiàn)像分割增強(qiáng)的方法,需要的可以參考一下2022-03-03python網(wǎng)絡(luò)爬蟲(chóng)精解之pyquery的使用說(shuō)明
PyQuery是一個(gè)類(lèi)似于jQuery的解析網(wǎng)頁(yè)工具,使用lxml操作xml和html文檔,它的語(yǔ)法和jQuery很像。和XPATH,Beautiful Soup比起來(lái),PyQuery更加靈活,提供增加節(jié)點(diǎn)的class信息,移除某個(gè)節(jié)點(diǎn),提取文本信息等功能2021-09-09Python實(shí)現(xiàn)批量上傳本地maven庫(kù)到nexus
這篇文章主要為大家詳細(xì)介紹了如何使用Python實(shí)現(xiàn)批量上傳本地maven庫(kù)到nexus,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的小伙伴可以參考下2024-01-01Python OpenCV 圖像區(qū)域輪廓標(biāo)記(框選各種小紙條)
這篇文章主要介紹了Python OpenCV 圖像區(qū)域輪廓標(biāo)記(框選各種小紙條),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03