Django 1.5.4 专题15 south

一.安装south

pip install south

 chmod +x manage.py  

在settings.py中添加app


运行效果如下

Django 1.5.4 专题15 south_第1张图片

第 1 步,生成表结构的初始版本,执行下面的命令后,会自动创建 your_app/migrations 目录并生成 0001_initial.py 脚本:
./manage.py schemamigration your_app --initial
第 2 步,如果数据库中已经存在 your_app 的表结构,则需要通过 --fake 命令告诉 South:
./manage.py migrate your_app --fake
若不存在,用下面命令在数据库中创建表结构:
./manage.py migrate your_app


增加 Model 字段
为 your_app/models.py 增加字段后,执行下面的命令 South 会自动比对 0001_initial.py 并生成 0002_auto__xxxx.py:
./manage.py schemamigration your_app --auto
下面的命令便是立即修改数据库,使新的表结构版本生效:
./manage.py migrate your_app

另外,原来部署只需要执行 ./manage.py syncdb,集成 South 后需要多做一步 ./manage.py migrate,自动应用所有 app 的表结构迁移脚本。

  1)创建一个没有数据库的新项目时
    1、创建数据库
    2、将south添加到INSTALLED_APPS
    3、运行syncdb命令,它将django和south的数据表加入到数据库中
    4、将你创建的apps添加到INSTALLED_APPS
    5、对每个app分别运行“python manage.py schemamigration app_name --initial”,它将在每个app的目录下创建migration目录和相应的文件
    6、然后运行“python manage.py migrate app_name”,这一步将app的数据表加入到数据库中
  2)在带有数据库的已存项目中使用south
    1、将south加入到INSTALLED_APPS中
    2、运行syncdb,它将south的数据表加入到数据库中
    3、对每个app分别运行python manage.py schemamigration app_name --initial,它将在每个app的目录下创建migration目录和相应的文件
    4、对每个app分别运行“python manage.py migrate app_name 0001 --fake”,该命令不会对数据库做任何操作,只是欺骗一下south,让它在south_migrationhistory表中添加一些记录以便于下次你想创造migration文件的时候所有东西都已搞定。
  3、在没有数据库的已存项目中使用south
    1)创建数据库
    2)将south加入到INSTALLED_APPS中
    3)对每个app分别运行“python manage.py schemamigration app_name --initial”,它将在每个app的目录下创建migration目录和相应的文件
    4)运行syncdb,它将所有没有migrations的apps加入到数据库中
    5)然后运行“python manage.py migrate”命令,它将对你的所有apps运行迁移操作。


./manage.py datamigration article convert_names

如图

Django 1.5.4 专题15 south_第2张图片


你可能感兴趣的:(django)