跳转到主要内容

使用Django和Mercurial进行演化式变更

项目描述

aino-mutations 是一个工具,用于在mercurial仓库的特定版本处调用变更脚本。变更脚本通常是执行某种数据库重构的脚本。aino-convert 并不智能

  • 不提供内省

  • 变更脚本旨在使用原始SQL进行模式迁移,这意味着您将锁定到特定的数据库引擎,当然,这是您自己的选择。

为什么?

aino-mutations 解决了在正确环境中运行变更的问题。通常当您进行变更时,您想执行某些逻辑来插入或删除数据。为了执行此逻辑,我们需要变更所编写的环境。aino-convert 会自动将mercurial仓库更新到添加变更的版本,并执行变更脚本。

要求

  • Django具有多数据库支持,v1.2+,或直到发布前的trunk。

  • Mercurial,仅测试了v1.5

  • 由mercurial仓库管理的Django项目

安装

  1. mutations 添加到您的pythonpath

  2. mutations 添加到 INSTALLED_APPS

配置

默认情况下,变更脚本在mercurial仓库根目录的 mutations 子目录中查找,您可以通过在设置文件中设置 MUTATIONS_ROOT 来更改此设置。请注意,MUTATIONS_ROOT 应该是相对于仓库根目录的相对目录路径。

用法

aino-mutations 会根据不同的数据库分离变更,因此您需要指定您的变更影响的是哪个数据库。要添加变更

  1. 将python文件(变异)添加到 MUTATIONS_ROOT/alias/ 中,其中 alias 是您在设置文件中使用的别名(默认名为 default)。

  2. 将文件添加到仓库中: hg add path/to/mutation

  3. 提交: hg ci -m"我的第一次变异"

  4. 现在运行变异: python manage.py mutate

变异

变异只是普通的python文件,可以执行任何您想做的事情。为了方便,变异脚本中传递了一些局部变量

  • cursor:当前数据库的游标实例

  • commit_unless_manageddjango.db.transaction.commit_unless_managed 的快捷方式

  • dry:如果使用 --dry 选项运行 mutate(这可以用于向用户显示一些信息),则此值将为True。

常见问题解答

  • 我创建了一个错误的变异,我该怎么办?

  • 您只需将其从仓库中删除即可: hg rm path/to/mutation; hg ci -m"不再有坏代码"

  • 我想在提交之前尝试变异,我该如何操作?

  • 运行: python manage.py runmutation path/to/mutation

  • 我的django项目在部署环境中,我还能使用aino-mutations吗?

  • 由于aino-mutations在执行变异时可能会更新项目文件到某个版本,因此最好的方法是克隆仓库到另一个位置,同时访问相同的数据库。

项目详细信息


下载文件

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

源代码分发

aino-mutations-0.1.0.0.tar.gz (6.1 kB 查看哈希值

上传时间

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面