zoukankan      html  css  js  c++  java
  • django schema migration

    syncdb 仅仅能初始化table(create),不能自己主动update/delete/drop。

    那么south应运而生。


    south简单使用方法:

    安装:

       pip install South


    安装完后,增加到INSTALLED_APPS中,并syncdb一下,否则会出现south_migrationhistory 表找不到。

    (注:此时syncdb的行为被south改变了,注意命令行输出,表south_migrationhistory的结构例如以下:



    測试安装:

      manage.py shell

     >> import south


    建立一个test_south的app,并建立模型south_test,加入一个字段name。 将app加入到INSTALLED_APPS中。

    from django.db import models
    
    class south_test(models.Model):
        name = models.CharField(max_length=100)
    # Create your models here.
    


    第一次使用:

      manage.py  schemamigration your_app --initial   

      manage.py migrate your_app

    本例中,your_app自然是test_south,以下是发生了神马(注意黄色加亮部分):


    这一步,仅仅是生成了用于创建数据库表的迁移文件,主要是0001_initial.py,内容例如以下:




    这一步,才真正生成了数据库模型,而且在south_migrationhistory加入了一条记录。

    数据表south_migrationhistory 插入了一条记录,例如以下:



    兴许自己主动ORM:

      manage.py  schemamigration your_app --auto

      manage.py migrate your_app

    为了演示,如果如今,因为需求变化,我们改动模型test_south.south_test,加入字段 memo,例如以下:

    from django.db import models
    
    class south_test(models.Model):
        name = models.CharField(max_length=100)
        memo = models.CharField(max_length=100)

    我们不再运行syncdb,改为运行schemamigration / migrate, 例如以下:


    创建了一个0002的文件,例如以下:



    migrate之前,我们看下south_test表


    运行migrate,例如以下:


    再次查看数据库表south_test


    我们再次观察下south_migrationhistory表,例如以下:


    ==========================

    对于已经存在的app,增加south非常easy,命令例如以下:

    manage.py convert_to_south your_app

    它仅仅是在表south_migrationhistory里面加入一条记录(同一时候生成迁移文件)。

    如果我们这里的your_app是books,那么south_migrationhistory的记录例如以下:


    (注意:假设代码增加了版本号控制---比方svn,那么其它人下载代码后,须要运行manage.py migrate myapp 0001 --fake,由于convert_to_south总是会尝试创建全部已经存在了的表,通过这个命令告诉south,myapp已经创建了这些表,它不须要再次创建了。以后就依照正常的迁移来做:

      manage.py syncdb

    后面假设有改动模型,则运行

      manage.py  shemamigration myapp --auto

      manage.py migrate myapp



    很多其它信息,能够參考这里:http://south.readthedocs.org/en/latest/tutorial/part1.html#tutorial-part-1


    转载请注明来自:http://blog.csdn.net/lion_awake/article/details/38283621,谢谢!


  • 相关阅读:
    JS方法集
    IOC 在Mvc中的使用
    ExtJS4 便捷三层开发模式
    Net Framework中的提供的常用委托类型
    作用域、作用域链理解
    Swing中弹出对话框的几种方式(转)
    程序员的价值观——经验是无价之宝(转)
    透过浏览器看HTTP缓存(转)
    模态窗口其实就是在当前窗口调用系统的消息循环,响应用户的操作,将相关的消息发送到对应的窗口(转)
    开发小结(转)
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/4002389.html
Copyright © 2011-2022 走看看