Django重置migrations文件的方法步骤


Posted in Python onMay 01, 2019

Django开发过程中如果数据库变动过多导致migrations的文件越来越多,管理起来很不方便, 幸运的是Django提供了一种方式可以是这些文件重置到0001状态,而且不删除原有数据。

确认migration文件跟数据库同步

$ python3 manage.py makemigrations

如果提示 No changes detected 那么数据就是同步的。

查看当前migration文件记录

$ python3 manage.py showmigrations
admin
 [X] 0001_initial
 [X] 0002_logentry_remove_auto_add
 [X] 0003_logentry_add_action_flag_choices
auth
 [X] 0001_initial
 [X] 0002_alter_permission_name_max_length
 [X] 0003_alter_user_email_max_length
 [X] 0004_alter_user_username_opts
 [X] 0005_alter_user_last_login_null
 [X] 0006_require_contenttypes_0002
 [X] 0007_alter_validators_add_error_messages
 [X] 0008_alter_user_username_max_length
 [X] 0009_alter_user_last_name_max_length
 [X] 0010_alter_group_name_max_length
 [X] 0011_update_proxy_permissions
contenttypes
 [X] 0001_initial
 [X] 0002_remove_content_type_name
isite
 [X] 0001_initial
 [X] 0002_article_pub_date
sessions
 [X] 0001_initial

重置文件

python3 manage.py migrate --fake mysite zero # mysite是app的名称

删除migrations的处init.py的其他文件

重新生产migrate文件

$ python3 manage.py makemigrations

同步到数据库

python3 manage.py migrate --fake-initial
Operations to perform:
 Apply all migrations: admin, auth, contenttypes, isite, sessions
Running migrations:
 Applying isite.0001_initial... FAKED

fake是假冒伪装的意思。执行过程,但不应用数据。

这些就清爽多了。

场景一

不考虑数据库数据,可以完全清空数据库。

步骤:

删除所有migrations

find . -path "*/migrations/*.py" -not -name "__init__.py" -delete
find . -path "*/migrations/*.pyc" -delete

删除数据库

重新生成migrations

python manage.py makemigrations
python manage.py migrate

场景二

有时候我们会直接导入完整的数据库,包括数据,这种情况下就不能简单的清空数据库。

这时我们的目的就是:清空数据库的migration history,保证以后的migrate能正常使用,但要保留其他数据。

步骤:

从数据库中删除所有非0001_initial的migration history

DELETE FROM django_migrations WHERE app IN ('your','app','labels') AND name != '0001_initial'

使用migrate命令回滚0001_initial的migration history

python manage.py migrate --fake your zero
python manage.py migrate --fake app zero
python manage.py migrate --fake labels zero

重新生成0001_initial,如果能保证已有0001_initial已是最新的,可跳过此步

find . -path "*/migrations/*.py" -not -name "__init__.py" -delete
find . -path "*/migrations/*.pyc" -delete

python manage.py makemigrations

在数据库中生成新的0001_initial记录

python migrate --fake-initial

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python Django模板的使用方法(图文)
Nov 04 Python
使用相同的Apache实例来运行Django和Media文件
Jul 22 Python
python进程管理工具supervisor的安装与使用教程
Sep 05 Python
浅谈python数据类型及类型转换
Dec 18 Python
Python多进程池 multiprocessing Pool用法示例
Sep 07 Python
使用Python开发SQLite代理服务器的方法
Dec 07 Python
使用CodeMirror实现Python3在线编辑器的示例代码
Jan 14 Python
pandas数据筛选和csv操作的实现方法
Jul 02 Python
python实现中文文本分句的例子
Jul 15 Python
Python with关键字,上下文管理器,@contextmanager文件操作示例
Oct 17 Python
Python谱减法语音降噪实例
Dec 18 Python
深入了解Python 方法之类方法 & 静态方法
Aug 17 Python
OpenCV-Python 摄像头实时检测人脸代码实例
Apr 30 #Python
浅谈Python编程中3个常用的数据结构和算法
Apr 30 #Python
python通过paramiko复制远程文件及文件目录到本地
Apr 30 #Python
python实现定时压缩指定文件夹发送邮件
Dec 22 #Python
python定时复制远程文件夹中所有文件
Apr 30 #Python
python实现图片转字符小工具
Apr 30 #Python
python 列表中[ ]中冒号‘:’的作用
Apr 30 #Python
You might like
收音机怀古---春雷3P7图片欣赏
2021/03/02 无线电
ThinkPHP的截取字符串函数无法显示省略号的解决方法
2014/06/25 PHP
PHP的伪随机数与真随机数详解
2015/05/27 PHP
php+ajax注册实时验证功能
2016/07/20 PHP
thinkPHP的表达式查询用法详解
2016/09/14 PHP
php实现的简单中文验证码功能示例
2017/01/03 PHP
jquery实现marquee效果(文字或者图片的水平垂直滚动)
2013/01/07 Javascript
js关于精确计算和数值格式化以及直接引js文件
2014/01/28 Javascript
javascript学习笔记(二)数组和对象部分
2014/09/30 Javascript
Angular.Js中ng-include指令的使用与实现
2017/05/07 Javascript
js异步编程小技巧详解
2017/08/14 Javascript
jQuery实现checkbox即点即改批量删除及中间遇到的坑
2017/11/11 jQuery
ajax请求data遇到的问题分析
2018/01/18 Javascript
jQuery实现的简单获取索引功能示例
2018/06/04 jQuery
webpack 从指定入口文件中提取公共文件的方法
2018/11/13 Javascript
[03:57]DOTA2英雄梦之声_第03期_幻影刺客
2014/06/21 DOTA
为Python的web框架编写前端模版的教程
2015/04/30 Python
Python3写入文件常用方法实例分析
2015/05/22 Python
Python 迭代器工具包【推荐】
2016/05/06 Python
Python设计模式之观察者模式简单示例
2018/01/10 Python
python使用zip将list转为json的方法
2018/12/31 Python
wxpython绘制圆角窗体
2019/11/18 Python
Python绘制动态水球图过程详解
2020/06/03 Python
python基于exchange函数发送邮件过程详解
2020/11/06 Python
Python中读取文件名中的数字的实例详解
2020/12/25 Python
CSS3 Columns分列式布局方法简介
2014/05/03 HTML / CSS
美国山地自行车、露营、户外装备和服装购物网站:Aventuron
2018/05/05 全球购物
斐乐美国官方网站:FILA美国
2019/03/01 全球购物
Java基础面试题
2012/11/02 面试题
幼儿园教师国培感言
2014/02/02 职场文书
航海技术专业毕业生推荐信
2014/07/09 职场文书
大学活动总结模板
2014/07/10 职场文书
大学生学习计划书
2014/09/15 职场文书
授权委托书样本
2014/09/25 职场文书
Pandas 稀疏数据结构的实现
2021/07/25 Python
在HTML中引入CSS的几种方式介绍
2021/12/06 HTML / CSS