• 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,谢谢!


  • 相关阅读:
    java之设计模式
    java关键字volatile用法详解
    java关键字tranisent用法详解
    java关键字final用法详解
    java关键字static用法详解
    护眼纯黑色VS2012配色方案
    (正能量)进击的菜鸟
    13、python实现罗马数字转整数
    python判断回文数-leetcode算法
    正确显示中文标签和正负号
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/4002389.html
Copyright © 2020-2023  润新知