关于django 数据库迁移(migrate)应该知道的一些事
命令
首先数据库迁移的两大命令:
python manage.py makemigrations & python manage.py migrate
前者是将model层转为迁移文件migration,后者将新版本的迁移文件执行,更新数据库。
这两中命令调用默认为全局,即对所有最新更改的model或迁移文件进行操作。如果想对部分app进行操作,就要在其后追加app name:
$ python manage.py makemigrations app_name $ python manage.py migrate app_name
如果想要精确到某个迁移文件(0004_xxx.py):
$ python manage.py migrate app_name 0004
如果想看迁移文件的执行状态,可以用showmigrations命令查看:
$ python manage.py showmigrations admin [X] 0001_initial auth [X] 0001_initial [X] 0002_alter_permission_name_max_length
显示django已知的migrations和状态。
错误
数据库的命令稍有不慎可能就会掉坑。特别是migrate命令,由于django的数据库中包含了migrations的记录,如果migrations文件丢失,很可能造成migrate失败。所以有必要将migrations文件加入版本控制,保证开发时的migrations记录和文件相匹配。
如果migrate出现了失败,很可能是因为migration文件包含的变更信息由于当前数据库的约束无法完完成。这时就应该去数据中找到这些记录或键的位置,删掉重做即可。
一般这些数据存在的表为:外键约束对应的表、auth_permission、django_content_type和django_migrations.
以上这篇关于django 数据库迁移(migrate)应该知道的一些事就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
使用python和Django完成博客数据库的迁移方法
上一讲完成了基本博客的配置和项目工程的生成.这次开始将博客一些基本的操作主要是数据库方面学习. 1.设计博客数据库表结构 博客最主要的功能就是展示我们写的文章,它需要从某个地方获取博客文章数据才能把文章展示出来,通常来说这个地方就是数据库.我们把写好的文章永久地保存在数据库里,当用户访问我们的博客时,Django 就去数据库里把这些数据取出来展现给用户. 博客的文章应该含有标题.正文.作者.发表时间等数据.一个更加现代化的博客文章还希望它有分类.标签.评论等.为了更好地存储这些数据,我们需要合理
-
Django 迁移、操作数据库的方法
文中涉及的示例代码,已同步更新到 HelloGitHub-Team 仓库 我们已经编写了博客数据库模型的代码,但那还只是 Python 代码而已,django 还没有把它翻译成数据库语言,因此实际上这些数据库表还没有真正的在数据库中创建. 迁移数据库 为了让 django 完成翻译,创建好这些数据库表,我们再一次请出我的工程管理助手 manage.py.切换到 manage.py 文件所在的目录(项目根目录)下,分别运行 pipenv run python manage.py makemigra
-
python django生成迁移文件的实例
关于Django生成迁移文件,我是在虚拟机上完成的 1.创建虚拟环境: 在终端上输入创建python3的虚拟环境 mkvirtualenv -p python3 虚拟环境的名字 在虚拟环境中安装好django1.8.4和pymysql 2.创建项目 创建项目语句:django-admin startproject 项目名字 创建APP:python manage.py startapp 模块名字 这时,我们要在pycham中打开这个项目,并在项目名的同名文件夹下的settings.py的INST
-
Django模型修改及数据迁移实现解析
Migrations Django中对Model进行修改是件麻烦的事情,syncdb命令仅仅创建数据库里还没有的表,它并不对已存在的数据表进行同步修改,也不处理数据模型的删除. 如果你新增或修改数据模型里的字段,或是删除了一个数据模型,你需要手动在数据库里进行相应的修改或者使用South.Django 1.7中已经集成了South的代码,提供了3个新命令: migrate: 用于执行迁移动作,具有syncdb的功能 makemigrations: 基于当前的model创建新的迁移策略文件 sql
-
关于django 数据库迁移(migrate)应该知道的一些事
命令 首先数据库迁移的两大命令: python manage.py makemigrations & python manage.py migrate 前者是将model层转为迁移文件migration,后者将新版本的迁移文件执行,更新数据库. 这两中命令调用默认为全局,即对所有最新更改的model或迁移文件进行操作.如果想对部分app进行操作,就要在其后追加app name: $ python manage.py makemigrations app_name $ python manage.
-
Django数据库迁移报错InconsistentMigrationHistory
Django在执行python manage.py makemigrations的时候一切正常 但是执行python manage.py migrate提示异常: raise InconsistentMigrationHistory( django.db.migrations.exceptions.InconsistentMigrationHistory: Migration admin.0001_initial is applied before its dependency user.000
-
django数据库迁移migration实现
在django中,ORM(对象关系映射器—object-relational mapper)任务是:模型化数据库,创建数据库由另外一个系统负责(迁移–migration),迁移任务是根据对models.py文件的改动情况,添加或者删除表和列 依然报错: models.py from django.db import models class Item(models.Model): text=models.TextField(default='') tests.py '''from dja
-
Django数据库迁移常见使用方法
1 数据导出 python manage.py dumpdata 不指定 appname 时默认为导出所有的app python manage.py dumpdata [appname] > appname_data.json 指定appnamde 导出 指定app 的数据(比如appname为cmdb) python manage.py dumpdata cmdb>cmdb.json 2. 数据导入python manage.py loaddata 不需要指定 appname python
-
django中的数据库迁移的实现
Django是用python写的web开发框架,其特点是: 1.重量级框架,内部封装了很多的功能组件,使开发变的简便快速, 2.MVT模式:前后端分离,高内聚低耦合,m:model,与mvc中的m功能相同,负责和数据库交互,进行数据处理,v:view,与mvc中的c功能相同,接收请求,进行业务处理,返回应答, t:template,与mvc中的v功能相同,负责封装构造要返回的html. orm:对象关系映射,主要实现模型对象到数据库数据的映射. 1.首先要在models.py中建立模型类,示例:
-
解决Django数据库makemigrations有变化但是migrate时未变动问题
写models.py时缺少了一个 verbose_name,导致数据库出现问题,整了很久,摸索出重新建立数据库的方法: 首先删除每个app中的migrations中的除了init.py的文件,在数据库中清空所有的表,然后执行migrate,这时会自动生成系统默认的那些表,然后执行makemigrations,再执行migrate 如果只是众多应用中的一个出了问题的话,删除与之相关的表,然后进入django_migrations表中,将相应的app那项记录删除,然后再执行 makemigratio
-
django数据库migrate失败的解决方法解析
Django是一个MVC架构的web框架,其中,数据库就是"Module".使用这种框架,我们不必写一条SQL语句,就可以完成对数据库的所有操作.在之前的Django版本中,我们像操作本地对象那样操作数据对象,在更改保存之后,执行python manage.py syncdb命令来同步数据库,在我使用的1.9.2版本中,需要依次执行一下步骤: python manage.py makemigrations (这个命令会根据你对数据库做出的更改生成操作数据库的python脚本) pyth
-
解决Laravel5.x的php artisan migrate数据库迁移创建操作报错SQLSTATE[42000]
Laravel5.x运行迁移命令创建数据表:php artisan migrate报错. Illuminate\Database\QueryException : SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes (SQL: alter table `users` add unique `users_email_uniqu
-
Flask数据库迁移简单介绍
前言 用过Django的小伙伴都知道,Django的ORM是自带的,比较特殊,而且集成了很多功能,比如数据库迁移- 何为ORM,个人之见解,简化sql语句的书写,将关系型数据库的一张张表转化为了python的类,最大的好处是简化了学习成本,不会sql语句的程序员也能平滑的使用数据库,并且天生防sql注入.flask可以使用SQLAlchemy,包名为flask-sqlalchemy.至于具体用法翻译的官方文档讲的也足够清楚.大家直接谷歌跟着文档就能搞定,本篇主要讲如何进行数据库迁移. flask
-
Django数据库表反向生成实例解析
本文我们研究下如何在django中反向生成mysql model代码,接下来我们看看具体介绍. 我们在展示django ORM反向生成之前,我们先说一下怎么样正向生成代码. 正向生成,指的是先创建model.py文件,然后通过django内置的编译器,在数据库如mysql中创建出符合model.py的表. 反向生成,指的是先在数据库中create table,然后通过django内置的编译器,生成model代码. 1.准备工作 创建django工程以及app 创建django工程,名字是hell
随机推荐
- mysql服务启动却连接不上的解决方法
- JS测试显示屏分辨率以及屏幕尺寸的方法
- 正则表达式常用用法汇总
- jQuery将表单序列化成一个Object对象的实例
- php使用Jpgraph创建折线图效果示例
- firefox浏览器不支持innerText的解决方法
- PHP 常用数组内部函数(Array Functions)介绍
- 用CSS解决中英文混合字符串的截取省略问题的解决办法
- VBS教程:方法-Copy 方法
- jquery中使用ajax获取远程页面信息
- uploadify 3.0 详细使用说明
- JS实现简洁、全兼容的拖动层实例
- Android利用RecyclerView实现全选、置顶和拖拽功能示例
- JS匿名函数类生成方式实例分析
- CentOS 6.3安装配置Weblogic-10方法
- 总结UNIX/LINUX下C++程序计时的方法
- c++线程池实现方法
- javascript实现循环广告条效果
- 在Eclipse IDE使用Gradle构建应用程序(图文)
- Java并发系列之Semaphore源码分析