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标准异常和异常处理详解
Feb 02 Python
状态机的概念和在Python下使用状态机的教程
Apr 11 Python
Python 遍历列表里面序号和值的方法(三种)
Feb 17 Python
python整合ffmpeg实现视频文件的批量转换
May 31 Python
pyqt 多窗口之间的相互调用方法
Jun 19 Python
使用PYTHON解析Wireshark的PCAP文件方法
Jul 23 Python
Python实现微信小程序支付功能
Jul 25 Python
Python3监控疫情的完整代码
Feb 20 Python
windows+vscode安装paddleOCR运行环境的步骤
Nov 11 Python
python 实现弹球游戏的示例代码
Nov 17 Python
python Protobuf定义消息类型知识点讲解
Mar 02 Python
Python加密技术之RSA加密解密的实现
Apr 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/01 无线电
获取php页面执行时间,数据库读写次数,函数调用次数等(THINKphp)
2013/06/03 PHP
Yii2使用自带的UploadedFile实现的文件上传
2016/06/20 PHP
tp5递归 无限级分类详解
2019/10/18 PHP
Exitjs获取DataView中图片文件名
2009/11/26 Javascript
js parentElement和offsetParent之间的区别
2010/03/23 Javascript
了解jQuery技巧来提高你的代码(个人觉得那个jquery的手册很不错)
2012/02/10 Javascript
JSONP 跨域访问代理API-yahooapis实现代码
2012/12/02 Javascript
jQuery获取CSS样式中的颜色值的问题,不同浏览器格式不同的解决办法
2013/05/13 Javascript
JS两个数组比较,删除重复值的巧妙方法(推荐)
2016/06/03 Javascript
Easyui的组合框的取值与赋值
2016/10/28 Javascript
JavaScript正则表达式exec/g实现多次循环用法示例
2017/01/17 Javascript
关于vue-resource报错450的解决方案
2017/07/24 Javascript
详解require.js配置路径的用法和css的引入
2017/09/06 Javascript
vue element-ui 绑定@keyup事件无效的解决方法
2018/03/09 Javascript
Vue props用法详解(小结)
2018/07/03 Javascript
利用vue.js把静态json绑定bootstrap的table方法
2018/08/28 Javascript
Pyramid将models.py文件的内容分布到多个文件的方法
2013/11/27 Python
Python3基础之输入和输出实例分析
2014/08/18 Python
Python contextlib模块使用示例
2015/02/18 Python
python smtplib模块自动收发邮件功能(二)
2018/05/22 Python
Flask框架各种常见装饰器示例
2018/07/17 Python
Python正则表达式和元字符详解
2018/11/29 Python
Python 按字典dict的键排序,并取出相应的键值放于list中的实例
2019/02/12 Python
Python中如何导入类示例详解
2019/04/17 Python
使用jupyter notebook将文件保存为Markdown,HTML等文件格式
2020/04/14 Python
Python实现Appium端口检测与释放的实现
2020/12/31 Python
澳洲小众品牌的集合网站:BNKR
2018/02/23 全球购物
解决方案设计综合面试题
2015/08/31 面试题
教育实习生的自我评价分享
2013/11/21 职场文书
党风廉设责任书
2014/04/16 职场文书
结对共建协议书
2014/08/20 职场文书
单位推荐信范文
2015/03/27 职场文书
2016廉政教育学习心得体会
2016/01/25 职场文书
2016年全国爱眼日宣传教育活动总结
2016/04/05 职场文书
互联网的下一个风口:新的独角兽将诞生
2019/08/02 职场文书