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 相关文章推荐
paramiko模块安装和使用(远程登录服务器)
Jan 27 Python
Python设计模式之单例模式实例
Apr 26 Python
python进阶教程之函数对象(函数也是对象)
Aug 30 Python
让Python代码更快运行的5种方法
Jun 21 Python
Python实现各种排序算法的代码示例总结
Dec 11 Python
Python实现的生成格雷码功能示例
Jan 24 Python
全面分析Python的优点和缺点
Feb 07 Python
删除python pandas.DataFrame 的多重index实例
Jun 08 Python
python3 拼接字符串的7种方法
Sep 12 Python
Python对接 xray 和微信实现自动告警
Sep 17 Python
解决python 上传图片限制格式问题
Oct 30 Python
python导入不同目录下的自定义模块过程解析
Nov 18 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
php给一组指定关键词添加span标签的方法
2015/03/31 PHP
删除PHP数组中的重复元素的实现代码
2017/04/10 PHP
Opacity.js
2007/01/22 Javascript
javascript 处理HTML元素必须避免使用的一种方法
2009/07/30 Javascript
ExtJS 2.0 GridPanel基本表格简明教程
2010/05/25 Javascript
教您去掉ie网页加载进度条的方法
2010/12/09 Javascript
删除Javascript Object中间的key
2014/11/18 Javascript
node.js中的path.extname方法使用说明
2014/12/09 Javascript
node中socket.io的事件使用详解
2014/12/15 Javascript
JS通过Cookie判断页面是否为首次打开
2016/02/05 Javascript
nodejs如何获取时间戳与时间差
2016/08/03 NodeJs
利用js获取下拉框中所选的值
2016/12/01 Javascript
脚本div实现拖放功能(两种)
2017/02/13 Javascript
jQuery插件FusionCharts绘制的3D双柱状图效果示例【附demo源码】
2017/04/20 jQuery
vue 将页面公用的头部组件化的方法
2017/12/18 Javascript
JS实现json对象数组按对象属性排序操作示例
2018/05/18 Javascript
配置eslint规范项目代码风格
2019/03/11 Javascript
js如何实现元素曝光上报
2019/08/07 Javascript
layui table数据修改的回显方法
2019/09/04 Javascript
微信小程序开发之转发分享功能
2019/10/22 Javascript
python中(str,list,tuple)基础知识汇总
2018/02/20 Python
PyCharm配置mongo插件的方法
2018/11/30 Python
微信小程序python用户认证的实现
2019/07/29 Python
Python3.9.0 a1安装pygame出错解决全过程(小结)
2021/02/02 Python
pycharm最新激活码有效期至2100年(亲测可用)
2021/02/05 Python
全球知名旅游社区巴西站点:TripAdvisor巴西
2016/07/21 全球购物
Chicco婴儿用品美国官网:汽车座椅、婴儿推车、高脚椅等
2018/11/05 全球购物
自荐信封面
2013/12/04 职场文书
学校卫生检查制度
2014/02/03 职场文书
产假请假条
2014/04/10 职场文书
采购部长岗位职责
2014/06/13 职场文书
环境工程专业自荐信范文
2014/06/24 职场文书
代办委托书怎么写
2014/08/01 职场文书
2014最新离职证明范本
2014/09/12 职场文书
司法局2014法制宣传日活动总结
2014/11/01 职场文书
薪资证明范本
2015/06/19 职场文书