django 从1.7版本开始起增加了一个新的数据迁移功能,在之前如果你数据models文件做了修改,如果是已经上线的项目就非常麻烦了,要反复测试很多次才能在正式库上修改,操作风险相对比较高,当然在1.6版本前也有第三方的数据迁移工具,例如south,在1.7版本前大家用这个做数据迁移的比较多,但现在从1.7版本开始就自带数据迁移功能了,因为django1.8是官方永久性支持版本,所以本篇我们是在1.8环境下的操作,如果还用老版本的兄弟,建议尽快切换新版本,老版本都官方都不在支持了,数据迁移功能对老版本用户来说,这个功能算是比较新的功能,有想用django1.8开发的朋友,就要了解数据迁移功能如何使用了,我们今天就来看看如何使用该功能,首先建立我们的models文件,假设我们的models.py文件内容如下:

class Post(models.Model):

    author = models.ForeignKey(User)

    title = models.CharField(max_length=150)

    text = models.TextField()

    created_date = models.DateTimeField(blank=True, null=True)


这是一个典型的博客文章model,有了这个model,我们如何让数据库也建立相应的表呢,之前的用syncdb,但现在我们就要用migrate, 另外需要注意的是sysdb这个命令在1.9版本就没有了。

因为我之前已经同步一次数据库,所以为了了解这个功能的强大,我在models里增加一条语句,修改如下:

class Post(models.Model):

    author = models.ForeignKey(User)

    title = models.CharField(max_length=150)

    text = models.TextField()

    created_date = models.DateTimeField(blank=True, null=True)

    published_date = models.DateTimeField(blank=True, null=True)


首先我们生成迁移脚本,运行:

python manage.py mkaemigrations

Migrations for 'blog':

  0004_post_published_date.py:

    - Add field published_date to post


运维完后并数据库并没有发生变化,只是生成了要操作数据库的一些脚本文件,感兴趣的可以去migrations目录里查看。

接下来运行:

python manage.py migrate

输出:

Synchronizing apps without migrations:

  Creating tables...

    Running deferred SQL...

  Installing custom SQL...

Running migrations:

  Rendering model states... DONE

  Applying blog.0004_post_published_date... OK

看到已经将published_date这个字段增加上了,你在数据库里会看到这个字段,如果你在运行makemigrations,会得到:

No changes detected

这表明你做的修改都已同步到数据库中,没有可改变的了,这个例子是展示的是增加字段,如果你是第一次运行,原理也是一样,就更简单了,所以有了migrate,以后model的的任何改变,例如增加,删除,修改,都先makemigrations, 然后migrate二步就完成了与数据库的同步。


©著作权归作者所有:来自51CTO博客作者mb5fdb12e4adbb2的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 闲聊虚拟机迁移
  2. Spring Cloud Gateway 扩展支持多版本控制及灰度发布
  3. kafka查看版本
  4. MGR用哪个版本?5.7 vs 8.0
  5. MySQL产品的生命周期
  6. MySQL 数据库事务及隔离级别,多版本控制
  7. 轻量级流程图控件GoJS最新版本v2.1.35发布
  8. win10 安装 MySQL8.0版本
  9. Kubernetes入门到进阶实战,系统性掌握K8s生产实践(2021新课,基于v1.

随机推荐

  1. Android隐藏程序及调用
  2. flutter [!] Android toolchain - develo
  3. Android之开源中国客户端源码分析(二)
  4. 自定义对话框Dialog
  5. Layout1.3
  6. android manifest.xml
  7. Android 5.1 SDK下载与配置
  8. android图片缩放平移
  9. Android 全退出
  10. Android录音应用