PostgreSQL架构版本控制工具

pgv的Python项目详细描述


travis-ci.org status

PostgreSQL架构版本控制工具

pgv是 可用于支持PostgreSQL架构的开源实用程序 在VCS仓库里。

概述

pgv在需要时帮助您:

  • 将SQL文件存储在VCS存储库中;
  • 跟踪数据库架构的更改;
  • 使更改可以应用于各种数据库
    • 即使你只能在本地访问它。

安装

您可以使用pip安装pgv

pip install pgv

使用量

例如,您希望将数据库模式存储在git中 存储库repo.git位于文件夹db中。首先,你需要 初始化存储库:

~:    user$ git clone repo.git
~:    user$ cd repo
repo: user$ pgv init -p db

此命令创建简单的pgv配置pgv.yaml正在工作 目录和文件夹db

db/
  schemas/
  scripts/

根据约定,schemas子文件夹应包含 以数据库中所需架构命名的文件夹。里面的文件 目录应该是sql脚本,它描述了 图式。例如,您希望在中创建表foo和函数bar。 架构public

schemas/
  public/
    tables/
      foo.sql
    functions/
      bar.sql

scripts子文件夹应该包含一些人员脚本:数据修复, 迁移等等。此文件夹中的SQL文件可以包含 定义执行流上的位置。你需要添加脚本 授予对数据库中所有对象的访问权限。它应该被执行 毕竟。

scripts/
  grants_post.sql

好的,您要将提交的更改应用于数据库。让我们初始化 信息:

repo: user$ pgv initdb -d test

将更改推送到数据库test

repo: user$ pgv push -c -d test

例如,您已经对test数据库进行了一些检查,并且您已经理解了 不需要函数bar。让我们跳过它:

repo: user$ pgv show
c2d658898d4a1369c20285464bd5bb95713173f6
  schemas/public/tables/foo.sql
  schemas/public/functions/bar.sql
  scripts/grants_post.sql
repo: user$ pgv skip -f schemas/public/functions/bar.sql c2d658898d4a1369c20285464bd5bb95713173f6
repo: user$ git add db/.skiplist
repo: user$ git commit
repo: user$ pgv show
cdfdbfb2bdcf8ee2dbf190bbf3a73ffbd77bd9b3 [s]
  .skiplist

c2d658898d4a1369c20285464bd5bb95713173f6
  schemas/public/tables/foo.sql
  scripts/grants_post.sql

修复后,您希望将更改推送到production,但是数据库 只允许本地连接。让我们用更改包:

repo: user$ pgv collect -o changes-to-prod.tar.gz
repo: user$ scp changes-to-prod.tar.gz prod://tmp
repo: user$ ssh prod
~:    user@prod$ pgv push -i /tmp/changes-to-prod.tar.gz -d prod

测试

要运行测试,请使用:

tox

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

推荐PyPI第三方库


热门话题
java使用不安全的方法复制整个C结构?   java JavaFx表格视图滚动错误   java应该向应用服务器或数据库添加逻辑吗   java小程序参数标记的用途是什么?   扩展AbstractTestNGSpringContextTests时,java Autowired spring依赖项在抽象基类中始终为空   java1。4关于java版本1.3到1.4   java MVC循环依赖   Java中的oauth电子邮件同步   java Facebook/Parse登录行为异常:代理应用程序尚未安装   java JPA不持久化对象J2EE   如何使用java读取和修改存储在FTP服务器上的图像文件   java测试时为什么要创建/删除testdatabase?   CriteriaBuilder查询中不区分java重音   使用Java从http url获取文件扩展名   Java多维数组/打印空值   java Javax持久性无法在maven上编译   使用mac地址的java制造商名称   java将图像旋转到“指向”鼠标位置   tiff如何打开一个非常大的幻灯片图像,如下所示。使用Java的tif图像文件?   内存Java:是否将Xms设置为XX:PermSize或XX:MaxPermSize?