zoukankan      html  css  js  c++  java
  • South——谁说Django不能migrate!

    零、前言

    最近改一个项目,需要对已有的model进行更改。大家都知道Django自带的syncdb只能创建数据库,但是无法将已经改变的model应用的数据库中。

    大概两年前遇到这个问题的时候,网上的答案基本上都是自己手动进数据库修改。不过这次一搜,居然发现一个神器——South。

    一、快速上手

    South是什么东西呢,简单说就是实现migration的一个插件。用过Rails的人应该知道Rails自带migrate功能,非常好用,可以在不影响数据库中已有数据的情况下修改model。South就是干这个的。

    由于这个插件比较简单,我就写一下我当时的用法,大家可以有个初步了解。具体的请自行Google South,去官网看。

    安装:

    easy_install south

    配置:

    在Django项目的 settings.py 里面的 INSTALLED_APPS 里最后一行加上 'south'。

    使用:

    因为我已经有了数据,所以运行:

    python manage.py syncdb
    python manage.py convert_to_south base

    base是我存数据用的app。

    这样就完成了south的安装配置和初始化。

    现在我们可以修改model了。

    修改完之后,我们运行:

    python manage.py schemamigration base

    来生成migration。

    注意:这一步仅仅是生成了migration,还没有应用到数据库中。

    接着我们运行:

    python manage.py migrate base

    这样就将migrate应用到了数据库中。

    我们可以进数据库中手动查看一下,发现确实改变了。

    二、总结

    south这个东西,怎么说呢,我觉得只有神器可以形容了。你要知道当你面对已经有数据的项目并且想要修改model时候,那种小心翼翼生怕一步走错就丢失数据的感受有多蛋疼!south就好像是一个保护神,告诉你:放心改吧!

  • 相关阅读:
    HashMap死循环造成CPU100%
    ArrayList升级为线程安全的List
    并发容器-ConncurrentHashMap
    并发容器-概览
    不可变性final
    CAS
    原子类-Adder累加器
    hue-使用mysql作为元数据库
    yhd日志分析(二)
    yhd日志分析(一)
  • 原文地址:https://www.cnblogs.com/numbbbbb/p/3428117.html
Copyright © 2011-2022 走看看