PostgreSQL数据库快照版本管理工具

anybox.pg.odoo的Python项目详细描述


anybox.pg.odoo

这个工具主要管理当前数据库的版本快照, 模仿VCS工具(如init、commit、revert、log等)的通用工作流。 它最初是为快照odoo数据库而创建的,但很容易修改为 不可知论者。

Install

这个工具在Python2.7和Python3.x上工作。 在virtualenv、buildout或 全系统。当前唯一的依赖项是psycopg2>;=2.5。

使用virtualenv的示例:

$ virtualenv sandbox && source sandbox/bin/activate
$ pip install anybox.pg.odoo

Usage

首先用odb -h读取可用的命令。 您将获得可用的命令:

init                Set the current db
commit              Save the current db in a new revision
info                Display the revision of the current db
revert              Drop the current db and clone from a previous revision
log                 List all available revisions
purge               Destroy revisions
tags                List all tags
tag                 Tag a specific revision

您应该首先使用odb init

设置当前数据库
$ odb init demo8
Now revision 1

然后您可以使用odb info

$ odb info
database: demo8
revision : 1 (parent: 0)

提交当前数据库以使用odb commit

创建快照和新修订版
$ odb commit
Now revision 2
$ odb info
database: demo8
revision : 2 (parent: 1)
$ odb commit
Now revision 3
$ odb commit
Now revision 4

您可以使用odb revert

$ odb revert
Reverted to parent 3, now at revision 4

您也可以恢复到以前的任何版本:

$ odb revert 2
Reverted to parent 2, now at revision 4
$ odb info
database: demo8
revision : 4 (parent: 2)

您可以将标记放在修订版上,还原为标记,并使用odb tagodb tags删除标记:

$ odb tag v1 2
$ odb tag v2 3
$ odb tags
v2 (demo8*3)
v1 (demo8*2)
$ odb revert v1
Reverted to parent 2, now at revision 4
$ odb tag -d v1

您可以使用odb log

显示所有修订
$ odb log
demo8:
    revision: 4
    parent: 2
demo8*3:
    revision: 3
    parent: 2
    tag: v2
demo8*2:
    revision: 2
    parent: 1
demo8*1:
    revision: 1
    parent: 0

然后您可以清除除标记以外的所有修订:

$ odb purge keeptags

或所有修订版:

$ odb purge all

How it works and pollutes

  • 它使用postgresql的CREATE DATABASE FROM TEMPLATE功能
  • 它当前将版本信息存储在ir_config_parameter表中 关于奥多(尽管这在未来会改变)。
  • 它希望通过unix域连接到postgresql 允许当前用户创建和删除数据库的套接字。
  • 它将当前数据库存储在~/.anybox.pg.odoo

what’s next? (todo list)

  • 使用专用数据库来存储版本信息,而不是ir_config_parameter
  • 实施差异(恐惧)
  • 改进数据库命名方案

Contribute

Mercurial存储库和bug跟踪器:https://bitbucket.org/anybox/anybox.pg.odoo

使用以下命令运行测试:

$ python setup.py test

Changelog

0.6 (2014-11-02)

  • 修复了python 3中的错误
  • 提交并还原后删除当前版本的标记和消息

0.5 (2014-10-19)

  • 适用于Python3.1+
  • 适用于Postgres9.1或更低版本
  • odb purge keeptags:清除除标记之外的所有标记
  • 实现的提交消息
  • 现在检查源数据库是否存在(更安全)

0.4 (2014-10-19)

  • 已实现odb log
  • 已实现odb purge
  • 已实现odb tag,并还原为标记
  • 已实现odb tags
  • 将版本重命名为修订版
  • 将snapshot()重命名为commit()

0.3 (2014-10-16)

  • 保持与当前数据库相同的数据库以使其正常工作
  • 固定版本并从1开始
  • 在恢复操作期间也要断开连接
  • 去掉了不需要的尖端

0.2 (2014-10-15 after sleeping)

  • 固定包装
  • 修正了revert行为
  • 允许无参数还原
  • 改进的文档

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

推荐PyPI第三方库


热门话题
Java例外。Lang.Stringindexoutofboundsexception索引超出范围(0)   java Spring引导Freemarker从2.2.0升级失败   重构Java反模式名称?包含对象的对象包含。。。等   用java处理JDBC可能出现的死锁的最佳方法   java无法访问主线程上的数据库,因为它可能会在很长一段时间内锁定UI   java如何将固定大小的画布包装在边框窗格中的滚动窗格居中?   java解析xsd文件后得到空结果   在html页面中表示XML文件的java   socketjava对象流   sql Java越界异常数据库   JavaJBoss7.1.1不会在Mavericks上启动   Twincat ADS事件驱动读取在一段时间后停止工作(Java)   java MyBatis使用生成的ID插入所有   Mojave上缺少MacOS Java控制面板   JavaGuice:如果多次注入相同的依赖项,是否注入了该依赖项的相同实例?