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中的字符串知识点
Apr 14 Python
Python的Urllib库的基本使用教程
Apr 30 Python
Python使用tablib生成excel文件的简单实现方法
Mar 16 Python
Python中的Descriptor描述符学习教程
Jun 02 Python
Python实现多线程的两种方式分析
Aug 29 Python
Python OOP类中的几种函数或方法总结
Feb 22 Python
Python实现时间序列可视化的方法
Aug 06 Python
Python+Redis实现布隆过滤器
Dec 08 Python
完美解决keras保存好的model不能成功加载问题
Jun 11 Python
如何基于python实现年会抽奖工具
Oct 20 Python
Python用requests库爬取返回为空的解决办法
Feb 21 Python
python3美化表格数据输出结果的实现代码
Apr 14 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
phpstorm配置Xdebug进行调试PHP教程
2014/12/01 PHP
PHP文件缓存类示例分享
2015/01/30 PHP
thinkphp autoload 命名空间自定义 namespace
2015/07/17 PHP
一个非常实用的php文件上传类
2017/07/04 PHP
PHPExcel实现表格导出功能示例【带有多个工作sheet】
2018/06/13 PHP
JavaScript语句可以不以;结尾的烦恼
2007/03/08 Javascript
JavaScript 自动完成脚本整理(33个)
2009/10/20 Javascript
Javascript 面向对象 继承
2010/05/13 Javascript
javascript动态添加样式(行内式/嵌入式/外链式等规则)
2013/06/24 Javascript
jQuery圆形统计图开发实例
2015/01/04 Javascript
jquery搜索框效果实现方法
2015/01/16 Javascript
浅谈JavaScript中的对象及Promise对象的实现
2015/11/15 Javascript
jQuery的promise与deferred对象在异步回调中的作用
2016/05/03 Javascript
详解angular中如何监控dom渲染完毕
2017/01/03 Javascript
基于Jquery Ajax type的4种类型(详解)
2017/08/02 jQuery
在Vue项目中引入腾讯验证码服务的教程
2018/04/03 Javascript
解决vue项目中type=”file“ change事件只执行一次的问题
2018/05/16 Javascript
jQuery发请求传输中文参数乱码问题的解决方案
2018/05/22 jQuery
基于vue-router 多级路由redirect 重定向的问题
2018/09/03 Javascript
稍微学一下Vue的数据响应式(Vue2及Vue3区别)
2019/11/21 Javascript
用python删除java文件头上版权信息的方法
2014/07/31 Python
基于python 字符编码的理解
2017/09/02 Python
python样条插值的实现代码
2018/12/17 Python
wxpython布局的实现方法
2019/11/01 Python
解决python 执行sql语句时所传参数含有单引号的问题
2020/06/06 Python
keras实现多种分类网络的方式
2020/06/11 Python
Python脚本破解压缩文件口令实例教程(zipfile)
2020/06/14 Python
使用Python绘制台风轨迹图的示例代码
2020/09/21 Python
python两种获取剪贴板内容的方法
2020/11/06 Python
Sam’s Club山姆会员商店:沃尔玛旗下高端会员制商店
2017/01/16 全球购物
美国奢侈品在线团购网站:Gilt City
2017/11/16 全球购物
10条PHP编程习惯
2014/05/26 面试题
校园招聘策划书
2014/01/09 职场文书
父亲婚礼答谢词
2015/01/04 职场文书
少年犯观后感
2015/06/11 职场文书
SQL实现LeetCode(178.分数排行)
2021/08/04 MySQL