在部署前安全运行迁移

django-safemigrate的Python项目详细描述


Latest VersionBuild statusCode CoverageCode style: black

django safemigrate向django添加一个safemigrate命令 以便在部署时安全地运行迁移命令。

用法

安装django-safemigrate,然后将其添加到 INSTALLED_APPS在设置文件中:

INSTALLED_APPS=[# ..."django_safemigrate.apps.SafeMigrateConfig",]

然后标记可能运行的任何迁移 在部署前阶段, 例如添加列的迁移。

fromdjango_safemigrateimportSafeclassMigration(migrations.Migration):safe=Safe.before_deploy

此时,您可以运行safemigratedjango命令 运行迁移,并且只运行这些迁移。 但是,如果以前运行的迁移不安全 部署的代码是此迁移的依赖项, 然后这些迁移将被阻止,并且安全迁移 命令将失败并出现错误。

当代码完全部署后,只需运行普通的migrate django命令,它仍然正常工作。 例如,可以将命令添加到发布阶段 对于你的Heroku应用程序,安全迁移将运行 在升级新版本时自动执行。

安全选项

对于 safe迁移的属性。

  • Safe.before_deploy

    此迁移只有在部署代码更改之前才能安全运行。 例如,向模型添加新字段的迁移。

  • Safe.after_deploy

    只有在部署了代码更改之后,才能安全地运行此迁移。 如果未给定safe属性,则应用此默认值。 例如,从模型中删除字段的迁移。

  • Safe.always

    此迁移可以在之前和之后安全运行 代码更改已部署。 例如,更改字段help_text的迁移。

非价格模式

在正常操作下,如果有迁移 必须在依赖于 在任何标记为在部署后运行的迁移上 (或未标记) 该命令将引发一个错误以指示 有受保护的迁移 应该已经跑了,但还没跑, 正在阻止预期运行的迁移。

然而,在开发过程中,这些 会在开发人员之间积累, 既然可以接受停工 在发展的过渡时期, 最好是允许命令继续而不升高。

要启用非价格模式,请添加SAFEMIGRATE设置:

SAFEMIGRATE="nonstrict"

在此模式下,safemigrate将运行所有迁移 不会被任何不安全迁移阻止的。 任何剩余的迁移都可以在 使用普通的migratedjango命令。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Cassandra DB的javascript查询结果   java定时器任务调度   java在TLS上实现LDAP   为什么在浏览器中滚动会使java小程序闪烁?   未使用轮询器和serviceactivator提取java pubsub消息   java风暴多线程问题   java计算平均成绩   java将字符串添加到另一个类的数组列表中   文件Java路径如何转换为例如InputStream   java更改JComboBox的字体颜色   java inthttp:具有可轮询请求通道的inboundgateway   使用继承在Java中运行swing Base和扩展windows   java ivysettings。xml:添加本地maven路径   java如何将参数自定义视图传递给activity类   java延迟加载无法在Hibernate中使用一对一映射   当文件以“file:/”开头时,Java无法识别该文件   需要java正则表达式帮助,使用反斜杠   片段中的java GWT参数