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 08 Python
在Python 3中实现类型检查器的简单方法
Jul 03 Python
Python采用Django制作简易的知乎日报API
Aug 03 Python
python条件变量之生产者与消费者操作实例分析
Mar 22 Python
OpenCV2.3.1+Python2.7.3+Numpy等的配置解析
Jan 05 Python
python3.6+django2.0开发一套学员管理系统
Mar 03 Python
python Selenium实现付费音乐批量下载的实现方法
Jan 24 Python
python使用Plotly绘图工具绘制水平条形图
Mar 25 Python
Python 自动登录淘宝并保存登录信息的方法
Sep 04 Python
pytorch制作自己的LMDB数据操作示例
Dec 18 Python
tensorflow将图片保存为tfrecord和tfrecord的读取方式
Feb 17 Python
Python基于Serializer实现字段验证及序列化
Nov 04 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
33道php常见面试题及答案
2015/07/06 PHP
javascript XML数据显示为HTML一例
2008/12/23 Javascript
基于jquery实现的一个选择中国大学的弹框 (数据、步骤、代码)
2012/07/26 Javascript
node.js开发中使用Node Supervisor实现监测文件修改并自动重启应用
2014/11/04 Javascript
JavaScript使用FileSystemObject对象写入文本文件内容的方法
2015/08/05 Javascript
jquery处理checkbox(复选框)是否被选中实例代码
2017/06/12 jQuery
Node.js实现连接mysql数据库功能示例
2017/09/15 Javascript
浅谈react-native热更新react-native-pushy集成遇到的问题
2017/09/30 Javascript
vue获取元素宽、高、距离左边距离,右,上距离等还有XY坐标轴的方法
2018/09/05 Javascript
详解webpack打包后如何调试的方法步骤
2018/11/07 Javascript
zepto.js 实时监听输入框的方法
2018/12/04 Javascript
Vue+Node服务器查询Mongo数据库及页面数据传递操作实例分析
2019/12/20 Javascript
jQuery实现轮播图效果demo
2020/01/11 jQuery
基于JS实现table导出Excel并保留样式
2020/05/19 Javascript
[52:27]2018DOTA2亚洲邀请赛 3.31 小组赛B组 paiN vs Secret
2018/04/01 DOTA
python使用PyGame播放Midi和Mp3文件的方法
2015/04/24 Python
两个使用Python脚本操作文件的小示例分享
2015/08/27 Python
Python程序员面试题 你必须提前准备!(答案及解析)
2018/01/23 Python
详解python OpenCV学习笔记之直方图均衡化
2018/02/08 Python
python 对象和json互相转换方法
2018/03/22 Python
python生成多个只含0,1元素的随机数组或列表的实例
2018/11/12 Python
numpy实现神经网络反向传播算法的步骤
2019/12/24 Python
在pycharm中为项目导入anacodna环境的操作方法
2020/02/12 Python
pycharm不能运行.py文件的解决方法
2020/02/12 Python
详解Anaconda 的安装教程
2020/09/23 Python
美国体育用品在线:Modell’s Sporting Goods
2018/06/07 全球购物
博士学位自我鉴定范文
2013/12/26 职场文书
护理毕业生自我鉴定
2014/02/11 职场文书
高校教师岗位职责
2014/03/18 职场文书
教师四风对照检查材料思想汇报
2014/09/17 职场文书
个人四风对照检查材料
2014/09/26 职场文书
python爬虫selenium模块详解
2021/03/30 Python
一篇文章带你深入了解Mysql触发器
2021/08/02 MySQL
Nginx的gzip相关介绍
2022/05/11 Servers
LeetCode189轮转数组python示例
2022/08/05 Python