最近在玩Django,想用它寫一個很小很小的項目,Django自帶數據庫sqlite3,本來項目也小,我就用它了。
玩意雖小,東西卻不是那么好用的。
首先,在項目中建立模型,一個例子是這樣的:
class Milestone(models.Model): Content = models.CharField(max_length=500) Date = models.DateField()
然后,在python命令行中鍵入:python manage.py syncdb
OK ,它將在sqlite3數據庫中自動建立表enrich_milestone,它包含Content和Date字段。
后來我想把Date的屬性改為char型,於是修改了模型,變成這樣:
class Milestone(models.Model): Content = models.CharField(max_length=500) Date = models.CharField(max_length=200)
注意,這時候再次使用python manage.py syncdb是無效的,它並不會去同步數據庫的修改,也就是說,它可以同步的真是數據庫從無到有的過程,如果數據庫已經存在,它不會偵測數據庫內部是否變動並幫你修改,讓人挺不爽的。
怎么辦
我去sqlite的官網下載了一個sqlite3.exe下來,x86的,官網沒有x64的,既然沒有,我想應該是通用的,試了一下果然如此。
我把sqlite3.exe反正項目目錄下,和本項目的數據庫db.sqlite3一起,在此打開命令行窗口,進入sqlite。
1、用.open 載入db.sqlite文件
2、可以用.databases查看該文件下有哪些數據庫,用.tables查看有哪些表
3、我直接drop table 表名(這個是標准sql語句吧),把它刪除
4、返回Django使用python manage.py syncdb把數據庫表從無到有同步過來,大功告成