美文网首页
Django models migrate

Django models migrate

作者: 积土成城 | 来源:发表于2018-10-31 17:26 被阅读0次

    开发web应用免不了,要和数据库打交道。 数据关系模型很重要 。 因此也遇到了 每次要同步数据库变更的难题。

    Django 作为 轻量级的 python web 框架 相当优秀, 麻雀虽小五脏俱全
    其中 models 模块开发相对简单直接, 他的migrate 功能设计恰好解决了 同步数据库变更的难题。
    当在django 中 有 entity 继承 django.db.models.MODEL , 且对应的app 已经在setting里面注册,我们就可以使用migration 功能。


    image.png

    步骤大致如下:

    1. 配置数据源, 确保数据源可用
    2. python manage.py makemigrations #找到所有models的变更
    3. python manage.py migrate #根据models变更 生成对应数据库的变更,并在数据库同步执行

    数据源的配置在setting.py 文件中,databases 部分,详情可以咨询官网文档
    https://docs.djangoproject.com/en/2.0/ref/settings/#databases

    image.png

    很多时候, 由于我们有多个环境, 每个环境对应的变更顺序,或者权限都可能存在差异, 所以有的时候,要将对应并更的sql 获取到。

    方案一

    python manage.py sqlmigrate [appname] [migratename] #根据变更产生对应数据库的SQL
    然而今天在获取SQL的过程中,却反复遇到如下错误。


    image.png

    分析报错,并实验,发现报错的原因是 添加了一个 models.BooleanField() 类型的字段


    image.png
    然而, 在执行 python manage.py migrate 可以执行成功、

    方案二

    遇到该问题,可以尝试执行 python manage.py migrate --fake
    将生成的 migrations 文件在数据库 django_migrations 表里做标记
    然后,找到还没有执行的 migrations 文件, 将django_migrations 对应的记录删除,
    然后重新执行 python manage.py migrate 命令, 这样就会正常执行 未执行过的migratins文件

    相关文章

      网友评论

          本文标题:Django models migrate

          本文链接:https://www.haomeiwen.com/subject/fcfrzftx.html