django orm 之makemigrations和migrate命令
makemigrations:将模型的更改生成迁移脚本文件。模型所在的app,必须放在settings.py中的INSTALLED_APPS列表中。这个命令有以下几个常用选项:
1、app_label:后面可以跟一个或者多个app,那么就只会针对这几个app中模型的变化生成迁移脚本。如果没有任何的app_label,默认会检查INSTALLED_APPS中所有的app下的模型,针对每一个app中models的改变都生成相应的迁移脚本,注意生成的这些个迁移脚本文件都存放在各个app下的migrations下。
2、--name:给这个迁移脚本指定一个名字,如果不指定名字,那么生成的脚本文件的名称将会不那么见名知意。
3、--empty:生成一个空的迁移脚本。如果你想写自己的迁移脚本,可以使用这个命令来实现一个空的文件,然后自己再在文件中写迁移脚本。
migrate:将新生成的迁移脚本,映射到数据库中,创建新的表或者修改表的结构。执行python manage.py migrate命令会执行两个步骤:
1、执行对应app(默认为INSTALLED_APPS下所有的app,当然也可以指定app名称)下的migrations文件夹下的迁移脚本文件并映射到数据表,除了第一个迁移脚本文件没有依赖,其余的迁移脚本文件都会依赖前一个,在执行迁移脚本文件的时候,django首先会检查'django_migrations'表中的记录,执行指定的迁移脚本(默认为最新的,可以指定app和迁移脚本文件版本名称),会依次执行它依赖的迁移脚本文件,直到这个依赖已经执行过了(会在'django_migrations'有记录)
2、将已经执行的迁移脚本文件记录在django默认生成的'django_migrations'表中
app_label:将某个app下的迁移脚本映射到数据库中。如果没有指定,那么会将所有在INSTALLED_APPS中的app下的模型都映射到数据库中。
app_label migrationname:将某个app下指定名字的migration文件映射到数据库中。
执行migrate命令可能会报错,报错的主要原因是数据库的'django_migrations'表中的迁移版本与对应数据表中的数据表结构生成所需的迁移脚本相冲突。下面两个命令是解决报错的可用方法:
1、--fake:可以将指定的迁移脚本名字添加到数据库中。但是并不会把迁移脚本转换为SQL语句,修改数据库中的表。使用与数据表结构所需迁移脚本比已执行的迁移脚本超前。
2、--fake-initial:将第一次生成的迁移文件版本号记录在数据库中。但并不会真正的执行迁移脚本。使用于迁移脚本文件缺少并且很乱,可以把表的结构与models里的结构弄一致,删除所有迁移脚本,清空所有这个app相关的'django_migrations'数据。执行makmigrations,然后执行--fake-initial,继续正常的些其他表内容
showmigrations:查看某个app下的迁移文件。如果后面没有app,那么将查看INSTALLED_APPS中所有的迁移文件。
sqlmigrate:查看某个迁移文件在映射到数据库中的时候,转换的SQL语句
django orm 之makemigrations和migrate命令的更多相关文章
- Django ORM模型的一点体会
作者:Vamei 出处:http://www.cnblogs.com/vamei 严禁转载. 使用Python的Django模型的话,一般都会用它自带的ORM(Object-relational ma ...
- Django ORM模型:想说爱你不容易
作者:Vamei 出处:http://www.cnblogs.com/vamei 严禁转载. 使用Python的Django模型的话,一般都会用它自带的ORM(Object-relational ma ...
- 理解Django的makemigrations和migrate
在你改动了 model.py的内容之后执行下面的命令: python manger.py makemigrations 相当于在该app下建立 migrations目录,并记录下你所有的关于modes ...
- 【解决方案】django初始化执行python manage.py migrate命令后,除default数据库之外的其他数据库中的表没有创建出来
[问题原因]:django工程中存在多个应用,每个应用都指定了对应的数据库.执行python manage.py migrate命令时没有指定数据库,将只初始化默认的default数据库. [解决方案 ...
- 数据库表反向生成(二) Django ORM inspectdb
在前一篇我们说了,mybatis-generator反向生成代码. 这里我们开始说如何在django中反向生成mysql model代码. 我们在展示django ORM反向生成之前,我们先说一下怎么 ...
- Django ORM基本的单表增删改查
创建表 步骤: 1.app下models.py里创建类(继承models.Model) from django.db import models class UserInfo(models.Model ...
- Django ORM 数据库操作
比较有用 转自 http://blog.csdn.net/fgf00/article/details/53678205 一.DjangoORM 创建基本类型及生成数据库表结构 1.简介 2.创建数据库 ...
- Django 2.0 学习(14):Django ORM 数据库操作(上)
Django ORM 数据库操作(上) ORM介绍 映射关系: 数据库表名 ---------->类名:数据库字段 ---------->类属性:数据库表一行数据 ----------&g ...
- 【python】-- Django ORM(基础)
Django ORM(基础) Django 框架十分强大,自带数据库操作功能.Django 跟 SQLAchemy 一样,也是通过ORM(Object Relational Mapping,关系对象映 ...
随机推荐
- weight decay 和正则化caffe
正则化是为了防止过拟合,因为正则化能降低权重 caffe默认L2正则化 代码讲解的地址:http://alanse7en.github.io/caffedai-ma-jie-xi-4/ 重要的一个回答 ...
- autofac 的好博文
https://www.cnblogs.com/neverc/p/4914091.html#e https://www.cnblogs.com/stulzq/p/8547839.html
- 字符串替换For linux C
1.临时空间给了个1024,不需要可减少长度. 2.结果只用用strcpy了,没校验. bool Replace(char *str,const char *src, const char *des) ...
- 出门旅行(tour)
出门旅行(tour) 题目描述: 在神奇的 oi 国度,有 n 个城市 m 条双向道路,每条道路连接了两个不同的城市.寒假到了,小 S 决定出门旅游一趟.因为以往跟团旅游多了,这次小 S 决定自驾游. ...
- BZOJ1202: [HNOI2005]狡猾的商人(带权并查集)
Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 4577 Solved: 2249[Submit][Status][Discuss] Descript ...
- [JZOJ] 5905. 黑暗之魂(darksoul)
基环树直径裸题 分别在子树做DP,环上做DP,环上可以用单调队列优化到\(O(n)\) 写起来很麻烦 #include<algorithm> #include<iostream> ...
- PCA 实例演示二维数据降成1维
import numpy as np # 将二维数据降成1维 num = [(2.5, 2.4), (0.5, 0.7), (2.2, 2.9), (1.9, 2.2), (3.1, 3.0), (2 ...
- gdb-pada调试实例
先编写个简单的hello的程序 hello.c (ps:有没有头文件行不行,试试不就知道了) int main(){ printf("hello!\n"); int m,n; in ...
- spring开篇
本文引用http://www.cnblogs.com/ityouknow/p/5292559.html spring简介: spring是一个开源框架,spring是于2003 年兴起的一个轻量级的J ...
- Linux系统完整安装在虚拟机Mini
打开VMware Workstation虚拟机,然后如下图一步到位: 此处只是简单的安装Linux系统,要想查看安装后的IP等配置看: https://www.cnblogs.com/gentle-a ...