在1.6之前, Django只支持添加新的model到数据库, 而无法编辑或修改已经存在的model. 在当时, 这些Django缺失的功能可以通过South实现.

1. 新的命令

Django 1.7 为我们带来了三个新命令:

  • migrate: 用于执行迁移动作
  • makemigrations: 基于当前的model创建新的迁移策略文件
  • sqlmigrate: 显示迁移的SQL语句

值得注意的是, migration是基于App的, 因此, 我们可以针对某些app不启用migration功能.

2. 如何使用

migrations的使用非常简单: 修改model, 比如增加field, 然后运行

    python manager.py makemigrations

你的mmodel会被扫描, 然后与之前的版本作比较, 在app的migrations目录下生成本次迁移文件.

我们建议查看一下该迁移文件, 确保没有问题. 然后运行:

    python manager.py migrate

migrate命令会进行比较, 并应用该迁移.

3. 从South到新的Django migrations

如果想从south升级到最新的django migration, 可以按以下步骤实现:

  • 确保south中的migration全部被应用了
  • 从 INSTALLED_APPS中移除south
  • 删除每个app下migration目录中的所有文件, 除了__init__.py
  • 运行python manager.py makemigrations, Django会初始化migration
  • 运行python manager.py migrate, django会发现数据库和初始化的migration相同, 从而将他们标记为已应用

原文链接: http://www.weiguda.com/blog/72/

Django 数据迁移的更多相关文章

  1. 执行Django数据迁移,报错 1091

    问题描述 今天在Pycharm 中的Terminal下,执行数据迁移操作时,第一步: Python manage.py makemigrations ,是没有任何问题,但就是在执行真正的数据迁移时,也 ...

  2. Django数据迁移时提示 ModuleNotFoundError: No module named 'users'

    执行数据迁移时提示找不到对应的APP,错误如下: 这个错误主要是路径找不到引起的,只需在settings文件夹中添加app文件路径即可 sys.path.insert(0, os.path.join( ...

  3. Django数据迁移

    http://www.ziqiangxuetang.com/django/django-data-migration.html

  4. Django数据迁移时(或者新建模型时)报错:Did you install mysqlclient,解决后又报错:mysqlclient 1.3.13 or newer is required;you have 0.9.3

    报错信息如下: 解决方法一: 给项目根目录下mysite应用下的__init__.py文件加入如下代码: 运行又报错: 报错信息是:  mysqlclient版本太低 点击上图框中的链接进入到pyth ...

  5. Django添加模型无法数据迁移解决方法

    用Django开发一款博客,按照教程一步步写下来,发现当我创建一个模型blogpost的时候,使用数据迁移 python manage.py migrate 提示 Operations to perf ...

  6. Django模型修改及数据迁移

    Migrations Django中对Model进行修改是件麻烦的事情,syncdb命令仅仅创建数据库里还没有的表,它并不对已存在的数据表进行同步修改,也不处理数据模型的删除. 如果你新增或修改数据模 ...

  7. Django项目的创建与介绍.应用的创建与介绍.启动项目.pycharm创建启动项目.生命周期.三件套.静态文件.请求及数据.配置Mysql完成数据迁移.单表ORM记录的增删改查

    一.Django项目的创建与介绍 ''' 安装Django #在cmd中输入pip3 #出现这个错误Fatal error in launcher: Unable to create process ...

  8. django 连接MYSQL时,数据迁移时报:django.db.utils.InternalError: (1366, "Incorrect string value: '\\xE9\\x97\\xAE\\xE9\\xA2\\x98' for column 'name' at row 5")

    django 连接MYSQL时,数据迁移时报:django.db.utils.InternalError: (1366, "Incorrect string value: '\\xE9\\x ...

  9. Django进行数据迁移时,报错:(1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(6) NOT NULL)' at line 1")

    进行数据迁移时: 第一步: 命令:python manage.py makemigrations 在对应的应用里面的migrations文件夹中产生了一个0001_initial.py文件 第二步:执 ...

随机推荐

  1. ntopng网络流量实时监控

    ntopng is the next generation version of the original ntop, a network traffic probe that monitors ne ...

  2. django自定义模板标签

    # 创建自定义模板标签目录 django_project_name app_name templatetags (创建Python Packge,注意一定要用templatetags这个名字) my_ ...

  3. MongoDB的数据库导出和导入以及备份

    数据库的导出 mongoexport -d 数据库名 -c 集合名 -o 导出文件的保存地址及保存文件名.json --type json 数据库的导入 mongoimport -d 数据库名 -c ...

  4. 【转载】curl 模拟 GET\POST 请求,curl查看响应头 以及 curl post 上传文件

    补充说明:curl查看响应头 curl -I "http://www.baidu.com"HTTP/1.1 200 OK #HTTP协议 HTTP 返回码Server: Tengi ...

  5. jqgrid自定义列表开发=》实现高级查询

    标题已指出本文要说的三件事,首先是主角jqgrid,将应用在自定义列表中,重点介绍如何实现高级查询. 使用jqgrid实现自定义列表分为两大步骤,首先是要根据业务完成jqgrid的对象定义,即列表的描 ...

  6. 一个简单的Quartz定时任务

    package com.shuadan.quartz; import org.springframework.scheduling.annotation.Scheduled; import org.s ...

  7. java 对小数位的处理 BigDecimal DecimalFormat 常用操作 浅解

    [博客园cnblogs笔者m-yb原创, 转载请加本文博客链接,笔者github: https://github.com/mayangbo666,公众号aandb7,QQ群927113708] htt ...

  8. 接口自动化测试遭遇问题,excel中取出来的json串,无法使用requests去请求解决办法

    最近遭遇了一个问题,问题不大不小,想半天没想明白是哪里有问题,今天终于解决了 用python读取了excel用例中,body json字符串内容,然后requests去请求内容,结果一直报错,一直不明 ...

  9. 零基础IDEA整合SpringBoot + Mybatis项目,及常见问题详细解答

    开发环境介绍:IDEA + maven + springboot2.1.4 1.用IDEA搭建SpringBoot项目:File - New - Project - Spring Initializr ...

  10. python基础(内存分析,不引入第三方变量的方式交换变量的值)

    a,b指向同一块内存地址 下面方法是重新给b赋值;a,b指向不同的内存地址 字符串或int类型内存分析 不引入第三方变量的方式,交换a,b的值