最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Django更新models數(shù)據(jù)庫結(jié)構(gòu)步驟

 更新時間:2020年04月01日 10:57:14   作者:LuoZelin1989  
這篇文章主要介紹了Django更新models數(shù)據(jù)庫結(jié)構(gòu)的操作步驟,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

有時候在我們使用Django設(shè)計了models中的數(shù)據(jù)庫結(jié)構(gòu),并且已經(jīng)同步了數(shù)據(jù)庫之后,我們突然想在數(shù)據(jù)表中更新或者增加新的字段,也就是需要修改數(shù)據(jù)庫的結(jié)構(gòu),會出現(xiàn)以下的問題:

C:\Users\Administrator\Desktop\Web開發(fā)\Django_Demo\jkxy>python manage.py makemigrations
You are trying to add a non-nullable field 'grade' to student without a default; we can't do that (the dat
abase 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.py
Select an option:

就是在我們在models中修改了表的字段后,進行python manage.py makemigrations同步數(shù)據(jù)庫時會出現(xiàn)上面報錯,會導(dǎo)致數(shù)據(jù)庫結(jié)構(gòu)更新失敗

解決方法如下:

第一種方式:先刪除再重構(gòu)

1、刪除數(shù)據(jù)庫對應(yīng)的數(shù)據(jù)表

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

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

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

2、刪除應(yīng)用當(dāng)中的migrations文件

3、刪除應(yīng)用當(dāng)中的pychace文件

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

5、建立一個空數(shù)據(jù)庫,命令為python manage.py makemigrations --empty 應(yīng)用名稱

C:\Users\Administrator\Desktop\Web開發(fā)\Django_Demo\jkxy>python manage.py makemigrations --empty bbs
Migrations for 'bbs':
bbs\migrations\0001_initial.py

6、同步數(shù)據(jù)庫:

python manage.py makemigrations
python manage.py migrate

 
C:\Users\Administrator\Desktop\Web開發(fā)\Django_Demo\jkxy>python manage.py makemigrations --empty bbs
Migrations for 'bbs':
 bbs\migrations\0001_initial.py
 
C:\Users\Administrator\Desktop\Web開發(fā)\Django_Demo\jkxy>python manage.py makemigrations
Migrations for 'bbs':
 bbs\migrations\0002_student_testmyfield.py
 - Create model Student
 - Create model Testmyfield
 
C:\Users\Administrator\Desktop\Web開發(fā)\Django_Demo\jkxy>python manage.py migrate
Operations to perform:
 Apply all migrations: admin, auth, bbs, contenttypes, sessions
Running 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

第二種方式:直接在原結(jié)構(gòu)上更新結(jié)構(gòu)

#出版社
class Publisher(models.Model):
 '''出版社數(shù)據(jù)表'''
 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):
 '''出版社數(shù)據(jù)表'''
 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)

由于我們的數(shù)據(jù)庫的Publisher表本身已經(jīng)有數(shù)據(jù)了,所以我們在進行python manage.py makemigrations會出現(xiàn)以下錯誤:

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

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

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

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

#出版社
class Publisher(models.Model):
 '''出版社數(shù)據(jù)表'''
 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)

讓我們來檢查數(shù)據(jù)庫中的數(shù)據(jù)表:

可以看到數(shù)據(jù)結(jié)構(gòu)發(fā)生了變化!

以上這篇Django更新models數(shù)據(jù)庫結(jié)構(gòu)步驟就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • TensorFlow MNIST手寫數(shù)據(jù)集的實現(xiàn)方法

    TensorFlow MNIST手寫數(shù)據(jù)集的實現(xiàn)方法

    MNIST數(shù)據(jù)集中包含了各種各樣的手寫數(shù)字圖片,這篇文章主要介紹了TensorFlow MNIST手寫數(shù)據(jù)集的實現(xiàn)方法,需要的朋友可以參考下
    2020-02-02
  • python使用any判斷一個對象是否為空的方法

    python使用any判斷一個對象是否為空的方法

    這篇文章主要介紹了python使用any判斷一個對象是否為空的方法,并給出了改進的方法供大家對比參考,具有一定的借鑒價值,需要的朋友可以參考下
    2014-11-11
  • python小練習(xí)之爬魷魚游戲的評價生成詞云

    python小練習(xí)之爬魷魚游戲的評價生成詞云

    讀萬卷書不如行萬里路,只學(xué)書上的理論是遠遠不夠的,只有在實戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用Python爬取熱火的魷魚游戲評價,大家可以在過程中查缺補漏,提升水平
    2021-10-10
  • Python基礎(chǔ)之hashlib模塊subprocess模塊logging模塊

    Python基礎(chǔ)之hashlib模塊subprocess模塊logging模塊

    這篇文章主要為大家介紹了Python基礎(chǔ)之hashlib模塊subprocess模塊logging模塊示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11
  • 利用python numpy+matplotlib繪制股票k線圖的方法

    利用python numpy+matplotlib繪制股票k線圖的方法

    這篇文章主要介紹了利用python numpy+matplotlib繪制股票k線圖的方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • Python正則表達式教程之二:捕獲篇

    Python正則表達式教程之二:捕獲篇

    什么是捕獲呢?使用小括號指定一個子表達式后,匹配這個子表達式的文本(即匹配的內(nèi)容)可以在表達式或者其他過程中接著用,下面這篇文章就主要介紹了Python正則表達式中關(guān)于捕獲的相關(guān)資料,需要的朋友可以參考下。
    2017-03-03
  • Python?Pandas中的分組聚合操作詳解

    Python?Pandas中的分組聚合操作詳解

    Pandas是Python中用于數(shù)據(jù)分析的重要工具,提供了豐富的數(shù)據(jù)操作方法,本文將介紹?Pandas?中的數(shù)據(jù)分組方法以及不同的聚合操作,感興趣的小伙伴可以學(xué)習(xí)一下
    2023-11-11
  • 跟老齊學(xué)Python之編寫類之三子類

    跟老齊學(xué)Python之編寫類之三子類

    本文已經(jīng)是編寫類系列的第三篇了,也是最后一篇,介紹下子類,也算是個小總結(jié)吧,有需要的朋友可以參考下
    2014-10-10
  • Python PyWebIO提升團隊效率使用介紹

    Python PyWebIO提升團隊效率使用介紹

    這篇文章主要為大家介紹了Python PyWebIO提升團隊效率使用介紹,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01
  • Python如何提取html中文本到txt

    Python如何提取html中文本到txt

    這篇文章主要介紹了Python如何提取html中文本到txt問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01

最新評論

措勤县| 南靖县| 西安市| 宁武县| 蚌埠市| 河源市| 静宁县| 新乐市| 中超| 高碑店市| 涿州市| 芒康县| 馆陶县| 信丰县| 醴陵市| 敦化市| 乌拉特中旗| 孟州市| 壶关县| 寻甸| 广东省| 天祝| 涟水县| 平南县| 大同县| 盘山县| 延川县| 嘉善县| 五大连池市| 大关县| 宁津县| 峨山| 彭阳县| 青州市| 唐河县| 浦北县| 班玛县| 凤冈县| 仙桃市| 昂仁县| 兴业县|