您的位置:首页 > 数据库

Django如何更新数据库

2014-12-31 10:14 323 查看


本文转自:墙外行人


先说句闲话,Git真是深似海…

总所周知Django对数据库的操作包装做的非常靓,绝大数对数据库的访问全都转变成了普通的对象访问,对Web编程而言确实是个福音吧。Manage.py中有个syncdb命令就体现出了这个意思,但是这个命令也有个缺陷:即只能创建新表,而不能对旧表做修改。什么意思呢?就是如果你一开始新建了一个Model,里面有个属性比如说Char的长度是10,后来你想改成100,只用syncdb命令是办不到,据我所知其他命令也不行,只能直接对数据库进行操作。另外,一旦数据库变得很庞大,据说有个South可以很好的处理这方面的问题,还没仔细看过,以后再说。

为了讲清楚怎么更新数据库,我们还是以例子为例子。假如一开始你有个models.py如下:

在该Web文件的根目录下执行:

该book.old.sql文件长成这样:

此时因为一些需求,你得把Book类的中name变量的max_length改成100,直接修改文件是不行的,你还得同步到数据库中;经上面所述我们必须得对数据库进行直接操作,所以修改完Book类之后,我们以同样的方式生成book.new.sql。执行以下命令得到两次的区别:

之后也许我们得有一点点数据库的操作知识,根据每个不同点,修改为对数据库的修改操作,如上面的例子,我们可以修改book.update.sql文件为如下update.sql文件:

其中第一行表示我们要操作的数据库名字,由xxx表示;第二行是根据刚才的book.update.sql文件,发现区别有varchar的长度,根据mysql的语法,我们简单修改为修改语句即可。接着我们只需要执行下面语句,即可完成对数据库的更新:

当然以上的操作还是有些烦,但是很多时候还是很实用的,比如你偶尔加一个变量只需要该成add column,偶尔加一个Model类什么的就什么都不要改动。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  web 对象 数据库