Django重置migrations文件的方法步骤

 更新时间:2019年05月01日 08:35:19   作者:破晓技术部落  
这篇文章主要介绍了Django重置migrations文件的方法步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

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猜数字小游戏实现代码

    大家好,本篇文章主要讲的是python猜数字小游戏实现代码,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2022-01-01
  • pyinstaller的介绍与使用超详细讲解

    pyinstaller的介绍与使用超详细讲解

    PyInstaller是一个Python库,可以将Python应用程序转换为独立的可执行文件,下面这篇文章主要给大家介绍了关于pyinstaller的介绍与使用的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-11-11
  • Python中Turtle库改变画笔(海龟)方向的两种方法总结

    Python中Turtle库改变画笔(海龟)方向的两种方法总结

    turtle库是python标准库之一,入门级绘图库,import turtle之后即可使用,下面这篇文章主要给大家介绍了关于Python中Turtle库改变画笔(海龟)方向的两种方法,需要的朋友可以参考下
    2022-11-11
  • 使用Python的urllib和urllib2模块制作爬虫的实例教程

    使用Python的urllib和urllib2模块制作爬虫的实例教程

    这篇文章主要介绍了使用Python的urllib和urllib2模块制作爬虫的实例教程,展现了这两个常用爬虫制作模块的基本用法,极度推荐!需要的朋友可以参考下
    2016-01-01
  • pyscript的简单应用实现

    pyscript的简单应用实现

    本文主要介绍了pyscript的简单应用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-05-05
  • 十行代码使用Python写一个USB病毒

    十行代码使用Python写一个USB病毒

    本文给大家分享一个基于十行代码使用Python写一个USB病毒,很简单,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-06-06
  • python神经网络MobileNetV3 small模型的复现详解

    python神经网络MobileNetV3 small模型的复现详解

    这篇文章主要为大家介绍了python神经网络MobileNetV3 small模型的复现详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • 对dataframe进行列相加,行相加的实例

    对dataframe进行列相加,行相加的实例

    今天小编就为大家分享一篇对dataframe进行列相加,行相加的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • 利用python设计图像加密技术(Arnold算法)

    利用python设计图像加密技术(Arnold算法)

    这篇文章主要介绍了利用python设计图像加密技术(Arnold算法),本文将借助Arnold置乱法,讲解如何用python从头至尾设计出一套图像加密算法,需要的小伙伴可以才参考一下
    2022-03-03
  • Python判断Nan值的五种方式小结

    Python判断Nan值的五种方式小结

    这篇文章主要介绍了Python判断Nan值的五种方式小结,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05

最新评论