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基于xmlrpc实现二进制文件传输的方法
Jun 02 Python
尝试使用Python多线程抓取代理服务器IP地址的示例
Nov 09 Python
Python的GUI框架PySide的安装配置教程
Feb 16 Python
Python将多个excel文件合并为一个文件
Jan 03 Python
基于python 二维数组及画图的实例详解
Apr 03 Python
Windows 64位下python3安装nltk模块
Sep 19 Python
Python函数基础实例详解【函数嵌套,命名空间,函数对象,闭包函数等】
Mar 30 Python
Python数据可视化:箱线图多种库画法
Nov 06 Python
Python使用enumerate获取迭代元素下标
Feb 03 Python
python使用paramiko实现ssh的功能详解
Mar 06 Python
Selenium及python实现滚动操作多种方法
Jul 21 Python
python使用shell脚本创建kafka连接器
Apr 29 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生成缩略图的代码
2011/01/12 PHP
ThinkPHP 3.2 数据分页代码分享
2014/10/14 PHP
简单了解PHP编程中数组的指针的使用
2015/11/30 PHP
详解YII关联查询
2016/01/10 PHP
PHP数组操作实例分析【添加,删除,计算,反转,排序,查找等】
2016/12/24 PHP
PHP不使用内置函数实现字符串转整型的方法示例
2017/07/03 PHP
一个对于Array的简单扩展
2006/10/03 Javascript
基于jQuery的为attr添加id title等效果的实现代码
2011/04/20 Javascript
从数据结构分析看:用for each...in 比 for...in 要快些
2013/04/17 Javascript
JavaScript实现将数组数据添加到Select下拉框的方法
2015/08/21 Javascript
javascript html5 canvas实现可拖动省份的中国地图
2016/03/11 Javascript
jQuery EasyUI 获取tabs的实例解析
2016/12/06 Javascript
jquery pagination分页插件使用详解(后台struts2)
2017/01/22 Javascript
JS实现上传图片实时预览功能
2017/05/22 Javascript
基于iScroll实现下拉刷新和上滑加载效果
2017/07/18 Javascript
js canvas实现简单的图像扩散效果
2020/06/28 Javascript
webpack4 optimization使用总结
2019/11/10 Javascript
微信小程序实现滑动操作代码
2020/04/23 Javascript
elementUI同一页面展示多个Dialog的实现
2020/11/19 Javascript
[41:21]夜魇凡尔赛茶话会 第三期02:看图识人
2021/03/11 DOTA
Python 过滤字符串的技巧,map与itertools.imap
2008/09/06 Python
python操作MongoDB基础知识
2013/11/01 Python
Python字符串拼接的几种方法整理
2017/08/02 Python
python进程管理工具supervisor的安装与使用教程
2017/09/05 Python
scrapy爬虫完整实例
2018/01/25 Python
python 实现分页显示从es中获取的数据方法
2018/12/26 Python
python买卖股票的最佳时机(基于贪心/蛮力算法)
2019/07/05 Python
使用jupyter notebook将文件保存为Markdown,HTML等文件格式
2020/04/14 Python
QML用PathView实现轮播图
2020/06/03 Python
女性时尚在线:IVRose
2019/02/23 全球购物
现金会计岗位职责
2013/12/05 职场文书
网络信息安全承诺书
2014/03/26 职场文书
奉献演讲稿范文
2014/05/21 职场文书
民族团结先进集体事迹材料
2014/05/22 职场文书
医学专业大学生求职信
2014/07/12 职场文书
mysql联合索引的使用规则
2021/06/23 MySQL