Skip to main content

仅数据 django 迁移的提取工具

项目描述

django-数据迁移

测试开发分支 皮皮

多年来开发和维护一个 django 项目可能会开始成为一项与耗时任务的持续斗争,包括执行测试套件、重新创建本地环境或在新环境中设置项目。
由于不同的部署风格和/或在同一工作环境中的不同方法,长期运行的 django 应用程序的迁移文件往往会变得臃肿并包含不必要的代码。当时实施的目的是移动、编辑、复制或基本上修改数据。而且它背后的想法也很巧妙。
通过这种方法,您可以在开始更新的应用程序代码之前触发叶迁移的迁移。
      Missing migration?
      /                \
yes, migrate        no, continue
      \                /
   restart app with new code
但另一方面,您在已经巨大的迁移图中创建了一个新节点。
这就是django-data-migration出现的地方。它是常规迁移的直接替代品,不需要迁移树中的专用节点。

安装

安装包:

pip install django-data-migrations
在 Django 设置中配置包:
INSTALLED_APPS = [
    # django apps
    'data_migration',
    # your apps
]

配置

该软件包可使用
DATA_MIGRATION = {}

环境。

当前支持的属性:

  • SQUASHABLE_APPS:允许压缩的应用程序(-label)名称列表,您应该只在此处提供您自己的应用程序

用法

扩展管理命令: - makemigrations - migrate - squashmigrations - data_migrate

移民

# generate data migration file
./manage.py makemigrations --data-only [app_name]

# generate data migration file with readable name "name_change"
./manage.py makemigrations --data-only [app_name] name_change

# generate empty file
./manage.py makemigrations --data-only [app_name] --empty

# generate without fileheader
./manage.py makemigrations --data-only [app_name] --no-header

makemigrations命令生成一个文件 [app_name]/ data_migrations /[id]_[name].py,其内容如下

class Node:
    name = '0001_first'
    dependencies = ()
    migration_dependencies = ('testapp.0001_initial', )
    routines = [
    ]

迁移

# apply data migration file
./manage.py migrate --data-only

# revert complete data migration state
./manage.py migrate --data-only zero

# revert partial data migration state
./manage.py migrate --data-only 0002_some_big_change

壁球移民

应用程序压缩数据/定期迁移。
# regular squashing of test_app migrations 0001-0015
./manage.py squashmigrations test_app 0001 0015

# squash and replace test_app migrations 0001-0015 and extract data_migrations
./manage.py squashmigrations --extract-data-migrations test_app 0001 0015

数据迁移

扩展挤压。允许一次压缩单个应用程序、应用程序列表或所有应用程序。
# squash and replace all migrations at once
./manage.py data_migrate --all

# squash and replace migrations app-wise
./manage.py data_migrate test_app

发展

要开发包,请使用提供的./dev-requirements.txt文件进一步设置本地环境。

运行测试套件并生成覆盖率报告运行

coverage run -m pytest -v tests
coverage [html|report]

下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

django-data-migrations-0.1.2.tar.gz (15.2 kB 查看哈希)

已上传 source

内置分布

django_data_migrations-0.1.2-py3-none-any.whl (19.1 kB 查看哈希)

已上传 py3