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 拷贝对象(深拷贝deepcopy与浅拷贝copy)
Sep 06 Python
Python人脸识别初探
Dec 21 Python
Python Web程序部署到Ubuntu服务器上的方法
Feb 22 Python
django允许外部访问的实例讲解
May 14 Python
python中的decorator的作用详解
Jul 26 Python
Python玩转Excel的读写改实例
Feb 22 Python
PyQt4 treewidget 选择改变颜色,并设置可编辑的方法
Jun 17 Python
如何在Django项目中引入静态文件
Jul 26 Python
Python使用matplotlib绘制三维参数曲线操作示例
Sep 10 Python
tensorflow2.0与tensorflow1.0的性能区别介绍
Feb 07 Python
python中return如何写
Jun 18 Python
python 窃取摄像头照片的实现示例
Jan 08 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
终于听上了直流胆调频
2021/03/02 无线电
ThinkPHP3.1新特性之动态设置自动完成和自动验证示例
2014/06/19 PHP
PHP上传图片时判断上传文件是否为可用图片的方法
2016/10/20 PHP
PHP 面向对象程序设计之类属性与类常量实现方法分析
2020/04/13 PHP
Javascript与flash交互通信基础教程
2008/08/07 Javascript
jquery 子窗口操作父窗口的代码
2009/09/21 Javascript
JavaScript中数组的排序、乱序和搜索实现代码
2011/11/30 Javascript
jQuery fadeTo方法调整图片的透明度使用介绍
2013/05/06 Javascript
分享28款免费实用的 JQuery 图片和内容滑块插件
2014/12/15 Javascript
理解 JavaScript Scoping & Hoisting(二)
2015/11/18 Javascript
jQuery页面加载初始化的3种方法(推荐)
2016/06/02 Javascript
解析浏览器端的AJAX缓存机制
2016/06/21 Javascript
angular分页指令操作
2017/01/09 Javascript
关于vue中 $emit的用法详解
2018/04/12 Javascript
webpack配置打包后图片路径出错的解决
2018/04/26 Javascript
微信小程序地图(map)组件点击(tap)获取经纬度的方法
2019/01/10 Javascript
微信小程序如何使用globalData的方法
2019/06/06 Javascript
JS实现拖拽元素时与另一元素碰撞检测
2020/08/27 Javascript
Python map和reduce函数用法示例
2015/02/26 Python
python实现基本进制转换的方法
2015/07/11 Python
python web框架学习笔记
2016/05/03 Python
python+Django+apache的配置方法详解
2016/06/01 Python
Python3生成手写体数字方法
2018/01/30 Python
python opencv设置摄像头分辨率以及各个参数的方法
2018/04/02 Python
Python动态赋值的陷阱知识点总结
2019/03/17 Python
TensorFlow梯度求解tf.gradients实例
2020/02/04 Python
Django框架获取form表单数据方式总结
2020/04/22 Python
定制iPhone和Macbook保护壳:Slick Case
2018/11/21 全球购物
Otticanet美国:最顶尖的世界名牌眼镜, 能得到打折季的价格
2019/03/10 全球购物
Lowe’s加拿大:家居装修、翻新和五金店
2019/12/06 全球购物
社会发展项目建议书
2014/08/25 职场文书
关于运动会广播稿200字
2014/10/08 职场文书
婚宴邀请函
2015/01/30 职场文书
上课睡觉万能检讨书
2015/02/17 职场文书
大专护理专业自荐信
2015/03/25 职场文书
mysql优化之query_cache_limit参数说明
2021/07/01 MySQL