用django和mercurial进行进化突变

aino-mutations的Python项目详细描述


aino突变是一个工具,可以在某个版本调用突变脚本。 一个多变的仓库。变异脚本通常是执行 某种类型的数据库重构。aino convert不智能:

  • 不提供自省
  • 变异脚本旨在使用原始sql进行模式迁移 这意味着您将被锁定到一个特定的数据库引擎,即 当然是你自己的选择。

为什么?

Aino突变解决了在正确的 环境。通常当你做突变时,你想执行一些逻辑 插入或删除数据。为了执行这个逻辑,我们需要环境 其中变异是为之而写的。自动转换更新 在修订版中添加了变异的Mercurial存储库 执行变异脚本。

要求

  • django,支持多数据库,v1.2+,或者trunk,直到发布。
  • Mercurial,仅在v1.5中测试
  • 由Mercurial存储库管理的Django项目

安装

  1. mutations添加到pythonpath中
  2. mutations添加到INSTALLED_APPS

配置

默认情况下,在的mutations子目录中查找变异脚本 您的mercurial存储库根目录,可以通过设置^{tt5}来更改$ 在你的设置文件中。注意MUTATIONS_ROOT应该是相对的 指向存储库根目录的目录路径。

用法

AINO突变分离不同数据库的突变,因此 你需要指定你用你的变异影响的数据库。 添加突变:

  1. 将python文件(变异)添加到MUTATIONS_ROOT/alias/ 其中alias是设置文件中使用的别名 (默认值称为default)。
  2. 将文件添加到存储库:hg add path/to/mutation
  3. 提交:hg ci -m"my first mutation"
  4. 现在运行变异:python manage.py mutate

突变

突变只是普通的python文件,可以随心所欲。 为了方便起见,有一些局部变量传递给变异脚本:

  • cursor:当前数据库的游标实例
  • commit_unless_managed只是 django.db.transaction.commit_unless_managed
  • dry:如果使用--dry选项运行mutate,则为真。 它可以用来向用户显示一些信息。

常见问题解答

  • 我创建了一个错误的突变,我该怎么办?
  • 您只需将其从存储库中删除即可: hg rm path/to/mutation; hg ci -m"no more bad code"
  • 在提交之前,我想尝试一个变异,我该怎么做?
  • 运行:python manage.py runmutation path/to/mutation
  • 我的django项目位于部署环境中,我是否仍可以使用 艾诺突变?
  • 解决这一问题的最佳方法,因为aino突变可能会更新project 在执行变异时,最好将文件修改到某个版本 访问相同数据库时,将存储库克隆到其他位置。

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

推荐PyPI第三方库


热门话题
Java岩石、布、剪刀程序,带文件输入   java迭代Hashmap中的值列表   数组不能正确循环   JavaHibernate:对于一个遥远的惰性依赖,有一个渴望的获取者吗?   交通阻塞下的java车辆路径选择   如何在java中创建布尔方法来检查添加到具有特定索引的arraylist的对象   java Tomcat配置文件/上下文xml似乎已经崩溃了。请确保它是可分析和有效的。有关详细信息,请参阅服务器日志   为什么坐标有时相等,有时不相等?   java libgdx CameraInputController过于敏感,平移开始得太早   将C++排序函数移植到java   java应该是十进制的   swing Java JFrame中的所有内容都不可见   java使用数组中除一个元素以外的所有元素   从子类运行构造函数的Java