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连接oracle数据库实例
Oct 17 Python
详细讲解用Python发送SMTP邮件的教程
Apr 29 Python
Python中__init__.py文件的作用详解
Sep 18 Python
Python中运算符"=="和"is"的详解
Oct 08 Python
Python之py2exe打包工具详解
Jun 14 Python
Python之Scrapy爬虫框架安装及使用详解
Nov 16 Python
wxpython实现图书管理系统
Mar 12 Python
Python SVM(支持向量机)实现方法完整示例
Jun 19 Python
对python修改xml文件的节点值方法详解
Dec 24 Python
Python 使用 PyMysql、DBUtils 创建连接池提升性能
Aug 14 Python
Python flask框架实现查询数据库并显示数据
Jun 04 Python
写一个Python脚本下载哔哩哔哩舞蹈区的所有视频
May 31 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模块memcache和memcached区别分析
2011/06/14 PHP
php操作memcache缓存方法分享
2015/06/03 PHP
Yii快速入门经典教程
2015/12/28 PHP
PHP实现的简单组词算法示例
2018/04/10 PHP
Laravel程序架构设计思路之使用动作类
2018/06/07 PHP
阿里对象存储OSS在laravel框架中的使用方法
2019/10/13 PHP
Gambit vs ForZe BO3 第二场 2.13
2021/03/10 DOTA
12款经典的白富美型—jquery图片轮播插件—前端开发必备
2013/01/08 Javascript
使用Grunt.js管理你项目的应用说明
2013/04/24 Javascript
JS字符串处理实例代码
2013/08/05 Javascript
JQuery中对Select的option项的添加、删除、取值
2013/08/25 Javascript
探讨js中的双感叹号判断
2013/11/11 Javascript
Jquery实现自定义tooltip示例代码
2014/02/12 Javascript
Javascript中封装window.open解决不兼容问题
2014/09/28 Javascript
简介JavaScript中strike()方法的使用
2015/06/08 Javascript
一次$.getJSON不执行的简单记录
2016/07/19 Javascript
bootstrap table复杂操作代码
2016/11/01 Javascript
Vue.js结合bootstrap实现分页控件
2017/03/10 Javascript
Angular 2父子组件之间共享服务通信的实现
2017/07/04 Javascript
JS实现弹出下载对话框及常见文件类型的下载
2017/07/13 Javascript
详解基于 axios 的 Vue 项目 http 请求优化
2017/09/04 Javascript
JS闭包经典实例详解
2018/12/20 Javascript
JavaScript中AOP的实现与应用
2019/05/06 Javascript
Vue Render函数原理及代码实例解析
2020/07/30 Javascript
Python抓取淘宝下拉框关键词的方法
2015/07/08 Python
Python制作爬虫采集小说
2015/10/25 Python
python爬取网页转换为PDF文件
2018/06/07 Python
Python中的单行、多行、中文注释方法
2018/07/19 Python
python使用Geany编辑器配置方法
2020/02/21 Python
python实现图像外边界跟踪操作
2020/07/13 Python
Lookfantastic法国官网:英国知名美妆购物网站
2017/10/28 全球购物
市级绿色学校申报材料
2014/08/25 职场文书
银行奉献演讲稿
2014/09/16 职场文书
一份没有按时交货失信于客户的检讨书
2014/09/19 职场文书
2015年挂职锻炼工作总结
2014/12/12 职场文书
Python使用random模块实现掷骰子游戏的示例代码
2021/04/29 Python