色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術文章
文章詳情頁

Django更新models數據庫結構步驟

瀏覽:57日期:2024-10-13 16:01:52

有時候在我們使用Django設計了models中的數據庫結構,并且已經同步了數據庫之后,我們突然想在數據表中更新或者增加新的字段,也就是需要修改數據庫的結構,會出現以下的問題:

C:UsersAdministratorDesktopWeb開發Django_Demojkxy>python manage.py makemigrationsYou are trying to add a non-nullable field ’grade’ to student without a default; we can’t do that (the database needs something to populate existing rows).Please select a fix:1) Provide a one-off default now (will be set on all existing rows with a null value for this column)2) Quit, and let me add a default in models.pySelect an option:

就是在我們在models中修改了表的字段后,進行python manage.py makemigrations同步數據庫時會出現上面報錯,會導致數據庫結構更新失敗

解決方法如下:

第一種方式:先刪除再重構

1、刪除數據庫對應的數據表

注意:在這里可以不用暴力刪除數據表,可以利用django的migrations進行,操作如下:

1.1、首先將自己需要重構的數據表類的models注釋掉,然后輸入命令python manage.py makemigrations,這個時候migration會自動記錄刪除數據表的操作

Django更新models數據庫結構步驟

Django更新models數據庫結構步驟

1.2、然后在輸入命令python manage.py migrate,Django會自動將本地對應的數據庫進行刪除

Django更新models數據庫結構步驟

2、刪除應用當中的migrations文件

3、刪除應用當中的pychace文件

4、刪除db_sqllite文件(若配置數據庫為mysql時,可以刪除db_sqllite)

5、建立一個空數據庫,命令為python manage.py makemigrations --empty 應用名稱

C:UsersAdministratorDesktopWeb開發Django_Demojkxy>python manage.py makemigrations --empty bbsMigrations for ’bbs’:bbsmigrations0001_initial.py

6、同步數據庫:

python manage.py makemigrationspython manage.py migrate C:UsersAdministratorDesktopWeb開發Django_Demojkxy>python manage.py makemigrations --empty bbsMigrations for ’bbs’: bbsmigrations0001_initial.py C:UsersAdministratorDesktopWeb開發Django_Demojkxy>python manage.py makemigrationsMigrations for ’bbs’: bbsmigrations0002_student_testmyfield.py - Create model Student - Create model Testmyfield C:UsersAdministratorDesktopWeb開發Django_Demojkxy>python manage.py migrateOperations to perform: Apply all migrations: admin, auth, bbs, contenttypes, sessionsRunning migrations: Applying contenttypes.0001_initial... OK Applying auth.0001_initial... OK Applying admin.0001_initial... OK Applying admin.0002_logentry_remove_auto_add... OK Applying contenttypes.0002_remove_content_type_name... OK Applying auth.0002_alter_permission_name_max_length... OK Applying auth.0003_alter_user_email_max_length... OK Applying auth.0004_alter_user_username_opts... OK Applying auth.0005_alter_user_last_login_null... OK Applying auth.0006_require_contenttypes_0002... OK Applying auth.0007_alter_validators_add_error_messages... OK Applying auth.0008_alter_user_username_max_length... OK Applying bbs.0001_initial... OK Applying bbs.0002_student_testmyfield... OK Applying sessions.0001_initial... OK

第二種方式:直接在原結構上更新結構

#出版社class Publisher(models.Model): ’’’出版社數據表’’’ id=models.AutoField(primary_key=True) #自增ID主鍵 name=models.CharField(max_length=50,verbose_name=’出版社名稱’,null=False,unique=True) def __str__(self): return ’{},{}’.format(self.id,self.name)

接下來我們需要新增一個字段addr地址

#出版社class Publisher(models.Model): ’’’出版社數據表’’’ id=models.AutoField(primary_key=True) #自增ID主鍵 name=models.CharField(max_length=50,verbose_name=’出版社名稱’,null=False,unique=True) addr=models.CharField(max_length=128,verbose_name=’出版社地址’) def __str__(self): return ’{},{}’.format(self.id,self.name,self.addr)

由于我們的數據庫的Publisher表本身已經有數據了,所以我們在進行python manage.py makemigrations會出現以下錯誤:

Django更新models數據庫結構步驟

上圖的意思是說addr沒有默認值,無法更新到數據庫中,然后給出了兩個選項:

第一是讓你馬上給定一個默認值,然后一次性的把所有addr都寫成這個值

第二是先退出,你自己在models里面去配置默認值

我選擇先退出,在models中加上默認值,在進行makemigrations,這次就會更新成功了!

#出版社class Publisher(models.Model): ’’’出版社數據表’’’ id=models.AutoField(primary_key=True) #自增ID主鍵 name=models.CharField(max_length=50,verbose_name=’出版社名稱’,null=False,unique=True) addr=models.CharField(max_length=128,verbose_name=’出版社地址’,default=’成都市動物園’) def __str__(self): return ’{},{}’.format(self.id,self.name,self.addr)

Django更新models數據庫結構步驟

讓我們來檢查數據庫中的數據表:

Django更新models數據庫結構步驟

可以看到數據結構發生了變化!

以上這篇Django更新models數據庫結構步驟就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Django
相關文章:
主站蜘蛛池模板: 国产精品理论片在线观看 | 极品色在线精品视频 | 韩国精品一区二区三区在线观看 | 欧美精品久久久亚洲 | 欧美成人tv在线观看免费 | 久久精品亚瑟全部免费观看 | 日本伊人精品一区二区三区 | 久久中精品中文 | 日本一区深夜影院深a | 欧美日韩综合精品一区二区三区 | 中文字幕亚洲综合久久男男 | 久久久一区二区三区 | 国产毛片一区二区三区精品 | 欧美一区二区三区日韩免费播 | 又黄又免费| 久久久久综合一本久道 | 国产精品久久久久国产精品三级 | 无套内谢孕妇毛片免费看 | 91久久综合 | 成人偷拍视频 | 欧美黄色免费网站 | 特级aa一级欧美毛片 | 国产成人精品日本亚洲语音1 | 男女上下爽无遮挡午夜免费视频 | 在线国产日韩 | 91成人软件| 久久久一级 | 一本久道久久综合婷婷 | 色精品一区二区三区 | 亚洲国产成人影院播放 | 欧日韩视频777888 | 成年网站视频在线观看 | 成人在线播放视频 | 精品欧美一区二区在线看片 | 久久精品国产精品亚洲艾 | 国产亚洲欧美精品久久久 | 国产欧美日韩精品一区二区三区 | 免费观看毛片视频 | 久久黄色毛片 | 精品久久久久久无码中文字幕 | 亚州免费一级毛片 |