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就好像是一个保护神,告诉你:放心改吧!

  • 相关阅读:
    Vue3.0版本以上路由跳转控制台报错调整
    vue-cli3.0 项目如何使用sass less
    vue-element-admin项目npm install 安装不成功问题
    封装axios
    element ui判断是否必填添加校验
    element ui上传图片限制尺寸(宽、高、)大小、格式等
    阿里云服务器挂载新数据盘
    GitHub上最火的40个Android开源项目
    设计模式——设计原则
    设计模式——策略模式
  • 原文地址:https://www.cnblogs.com/numbbbbb/p/3428117.html
Copyright © 2011-2022 走看看