跳转到主要内容

monetdb 迁移工具

项目描述

mroll ci

Mroll迁移工具

mroll已被设计用来帮助MonetDB用户管理数据库迁移。功能包括向前和向后迁移功能。虽然您可以从任何时间点部署mroll,但建议从数据库创建的第一天开始使用它。mroll已被内部用于管理MonetDB的持续集成工作流程。

安装

从PyPi安装mroll

$ pip install mroll

概述

命令概述总结了功能。

$ mroll --help
Usage: commands.py [OPTIONS] COMMAND1 [ARGS]... [COMMAND2 [ARGS]...]...

Options:
  --help  Show this message and exit.

Commands:
  config    Set up mroll configuration under $HOME/.config/mroll
  history   Shows applied revisions.
  init      Creates mroll_revisions tbl.
  revision  Creates new revision from a template.
  rollback  Downgrades to previous revision by default.
  setup     Set up work directory.
  show      Shows revisions information.
  upgrade   Applies all revisions not yet applied in work dir.
  version   Shows current version

每个命令可能带有一些选项,通过--help添加进行说明。例如,在安装mroll时可以使用--path选项指定迁移目录的位置。例如,--path "/tmp/migration"位置。

要更新/设置mroll配置,请使用config命令。例如,要更新工作目录路径的配置设置,请运行。

mroll config -p <workdir_path>

用法

为了说明功能,我们将向您展示创建并管理名为demo的MonetDB数据库的步骤。我们假设您已下载mroll(见下文),并准备好尝试使用它。

设置

mroll 需要为每个想要管理的数据库创建一个工作目录。其位置没有限制,但你可以将其迁移脚本保存在应用程序文件夹中,例如 .../app/migrations。从 .../app 目录下执行命令:

$ mroll setup
ok

创建一个名为 migrations 的子目录来管理迁移版本。

配置

mroll 需要知道数据库的位置和凭证以启动迁移步骤。请确保您已经使用 monetdb 工具创建了并发布了演示数据库。然后完成文件 migrations/mroll.ini,例如:

[db]
db_name=demo
user=monetdb
password=monetdb
port=50000

[mroll]
rev_history_tbl_name = mroll_revisions

管理迁移的最终步骤是:

$ mroll init

定义第一个修订版

空数据库将被填充数据库模式。为此,我们定义一个修订版。修订版名称是由系统生成的

$ mroll revision -m "Initialize the database"
ok
$ mroll show all_revisions
<Revision id=fe00de6bfa19 description=Initialize the database>

/tmp/migrations/versions 下添加了一个新的修订版文件。打开它,并在 -- migration:upgrade-- migration:downgrade 节中加入 SQL 命令。

vi tmp/migrations/versions/<rev_file>
-- identifiers used by mroll
-- id=fe00de6bfa19
-- description=create tbl foo
-- ts=2020-05-08T14:19:46.839773
-- migration:upgrade
	create table foo (a string, b string);
	alter table foo add constraint foo_pk primary key (a);
-- migration:downgrade
	drop table foo;

然后运行“升级”命令。

$ mroll upgrade
Done

使用“历史”命令检查已应用的内容。

$ mroll history
<Revision id=fe00de6bfa19 description=create tbl foo>

使用 mroll show [all|pending|applied] 查看修订版概览,其中 mroll applied 等同于 mroll history

$mroll show applied
<Revision id=fe00de6bfa19 description=create tbl foo>

要回滚最后应用的修订版,请运行 rollback 命令。这将执行 migration:downgrade 节下的 SQL。

$ mroll rollback 
Rolling back id=fe00de6bfa19 description=create tbl foo ...
Done

开发

开发者注意

mroll 使用 Poetry 进行开发,用于依赖管理和打包。

开发安装

为了安装 mroll,请按照以下步骤操作:

  pip3 install --user poetry
  PYTHON_BIN_PATH="$(python3 -m site --user-base)/bin"
  export PATH="$PATH:$PYTHON_BIN_PATH"

  git clone git@github.com:MonetDBSolutions/mroll.git
  cd mroll
  poetry install
  poetry run mroll/commands.py --help

使用以下命令安装项目依赖项:

poetry install

这将在虚拟环境中创建虚拟环境并从 poetry.lock 文件中安装依赖项。然后可以使用 poetry 运行上述任何命令。

poetry run mroll/commands.py <command>

测试

运行所有单元测试

make test

项目详情


下载文件

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

源分发

mroll-0.4.0.tar.gz (17.3 kB 查看哈希值)

上传时间

构建分发

mroll-0.4.0-py3-none-any.whl (18.2 kB 查看哈希值)

上传时间 Python 3

支持者

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