您的位置:首页 > 数据库

django修改models.py后同步更新到数据库

2014-05-17 12:01 691 查看
一般在django项目的models.py中写了新的数据库类以后,都用:

python manage syncdb

来同步生成数据库。

 

但是如果修改了已同步的数据库类,则此命令无效。

django的设计原则是,对于包含数据的表的维护,一般是手工来做的。

 


虽然django有一个命令:

django-admin.py
reset appname
但是此命令会清空数据表内容。




手动修改数据库时,有三种方法:

1.直接mysql –u root –p登录mysql,找到相应数据库,修改表。

 

2.manage.py有一个dbshell(传送门):

它会根据settings.py中的数据库设置,选择相应数据库并使用帐号密码登录。

然后可以:

alter table [tablename] add column [columnname] [columntype];

eg:alter
table weblog add column tag varchar(30);

 
3.可以python manage.py shell,然后使用django提供的数据库操作来解决。

其他方法:
http://blog.codylab.com/django-update-model/


« 整合Syntax
Highlighter到django应用程序中

Django后台整合TinyMCE富文本编辑器 »


4 Responses to “django修改models.py后同步更新到数据库”

Django 如果 Model裡面的欄位有更動時,即使執行

> python manage syncdb


預設也是不會去更動Database的Table的。在這StackOverflow討論串有提到像是用 South等Migration
Tool,但如果Model只是新增一些Optional的欄位時,這真的是用牛刀了。裡面有提到另一個方法,我覺得還不錯簡單,在此記錄一下:

先用 
dumpdata
 這個指令把DB的資料先輸出成
.json 的格式。要注意的事,這時侯 model.py 必需是舊的 schema

> python manage.py dumpdata <your_app> > temp_data.json


然後 reset  app 的 db

> python manage.py reset <your_app>


最後再把 json 格式的 data 載入回來即可

> python manage.py loaddata temp_data.jso
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: