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 相关文章推荐
sqlalchemy对象转dict的示例
Apr 22 Python
跟老齐学Python之不要红头文件(2)
Sep 28 Python
Python的标准模块包json详解
Mar 13 Python
Python基于hashlib模块的文件MD5一致性加密验证示例
Feb 10 Python
使用python实现语音文件的特征提取方法
Jan 09 Python
使用Python在Windows下获取USB PID&VID的方法
Jul 02 Python
python 将字符串中的数字相加求和的实现
Jul 18 Python
PYTHON EVAL的用法及注意事项解析
Sep 06 Python
python智联招聘爬虫并导入到excel代码实例
Sep 09 Python
如何基于python3和Vue实现AES数据加密
Mar 27 Python
PyQt5实现登录页面
May 30 Python
手残删除python之后的补救方法
Jun 26 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
索尼SONY ICF-7600A(W)电路分析
2021/03/01 无线电
Windows7下的php环境配置教程
2015/02/28 PHP
PHP ajax 异步执行不等待执行结果的处理方法
2015/05/27 PHP
Zend Framework框架Smarty扩展实现方法
2016/03/22 PHP
thinkphp实现附件上传功能
2017/05/26 PHP
javascript 打印内容方法小结
2009/11/04 Javascript
JavaScript 精粹读书笔记(1,2)
2010/02/07 Javascript
javascript 实现 秒杀,团购 倒计时展示的记录 分享
2013/07/12 Javascript
jquery索引在使用中的一些困惑
2013/10/24 Javascript
Jquery焦点图实例代码
2014/11/25 Javascript
Node.js 日志处理模块log4js
2016/08/28 Javascript
javascript字符串对象常用api函数小结(连接,替换,分割,转换等)
2016/09/20 Javascript
jQuery.ajax实现根据不同的Content-Type做出不同的响应
2016/11/03 Javascript
你有必要知道的10个JavaScript难点
2017/07/25 Javascript
vue cli使用绝对路径引用图片问题的解决
2017/12/06 Javascript
vue 中directive功能的简单实现
2018/01/05 Javascript
初探Vue3.0 中的一大亮点Proxy的使用
2018/12/06 Javascript
layui实现二维码弹窗、并下载到本地的方法
2019/09/25 Javascript
JS制作简易计算器的实例代码
2020/07/04 Javascript
Python存取XML的常见方法实例分析
2017/03/21 Python
Python基础练习之用户登录实现代码分享
2017/11/08 Python
微信跳一跳辅助python代码实现
2018/01/05 Python
Python单元测试简单示例
2018/07/03 Python
Python3.5 Json与pickle实现数据序列化与反序列化操作示例
2019/04/29 Python
Python第三方库face_recognition在windows上的安装过程
2019/05/03 Python
PyQt4实时显示文本内容GUI的示例
2019/06/14 Python
使用Django xadmin 实现修改时间选择器为不可输入状态
2020/03/30 Python
Django表单提交后实现获取相同name的不同value值
2020/05/14 Python
Html5游戏开发之乒乓Ping Pong游戏示例(三)
2013/01/21 HTML / CSS
教师节感恩老师演讲稿
2014/08/28 职场文书
个人股份合作协议书
2014/10/24 职场文书
公司租车协议书
2015/01/29 职场文书
音乐会主持人开场白
2015/05/28 职场文书
导游词之白茶谷九龙峡
2019/10/23 职场文书
PHP设计模式(观察者模式)
2021/07/07 PHP
python获取带有返回值的多线程
2022/05/02 Python