最近在玩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把数据库表从无到有同步过来,大功告成