postgraas是一个超级简单的postgresql-as-a-service

postgraas-server的Python项目详细描述


https://travis-ci.org/blue-yonder/postgraas_server.svg?branch=masterhttps://coveralls.io/repos/github/blue-yonder/postgraas_server/badge.svg?branch=master

postgraas是一个超级简单的postgresql-as-a-service

什么是Postgraas?

postgraas通过一个简单的rest api为完整的postgresql数据库实例提供CRUD操作。 数据库实例是docker容器,api服务器是几百loc flask应用程序。 它并不是一个面向生产的解决方案,而是一个概念证明,可以让您自己轻松地传播创建“即服务”服务的理念,并应该激励您现在就开始使用自己的云基础设施。 但事实上,它很好地证明了这一概念,而且如果您需要一个快速的postgresql实例(例如集成测试、玩花哨的showhn项目或其他实验),那么它对于交付postgresql实例是非常有用的。 当然,通过rest api进行crud管理也是为现代软件项目构建自动化连续交付管道的必要前提。

安装

您可以在docs中找到详细说明

通过PIP安装:

pip install postgraas_server

启动wsgi api服务器,例如通过gunicorn:

pip install gunicorn
gunicorn -w 4 -b 0.0.0.0:8080 postgraas_server.postgraas_api:app

用法

我们需要将创建所需的所有参数作为http请求发送。 创建一个文件,例如my_postgraas.json

{
    "postgraas_instance_name": "my_postgraas",
    "db_name": "my_db",
    "db_username": "db_user",
    "db_pwd": "secret"
}

使用curl向collection资源发出post请求:

curl -H "Content-Type: application/json" -X POST --data @my_postgraas.json http://localhost:8080/api/v2/postgraas_instances

现在您的实例已创建,作为响应,您将获得实例的详细信息:

{
     "postgraas_instance_id": 1,
     "container_id": "193f0d94d49fa26626fdbdb583e9453f923468b01eac59207b4852831a105c03",
     "db_pwd": "secret",
     "host": "not imlemented yet",
     "db_name": "my_db",
     "db_username": "db_user",
     "port": 54648
}

我们现在可以连接到数据库,例如通过psql

psql -h localhost -p 54648 -U db_user my_db

太棒了,不是吗?

开发

运行测试

您需要安装Docker

确保您拉右Docker图像:

docker pull postgres:9.4

创建一个virtualenv并安装需求,包括dev需求和本地可编辑安装 为了方便起见,您可以安装这些要求。in

pip install -r requirements.in
pip install -r requirements_dev.txt
pip install -e .

对于测试,您需要一个正在运行的postgres元数据库,并相应地设置一些环境变量。 有一个方便的脚本可以使用Docker Postgres数据库设置这一切:

. setup_integration_test_docker.sh

现在您应该能够执行测试:

pytest tests/

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

推荐PyPI第三方库


热门话题
java需要在没有数组的情况下获得最高值和最低值   java迭代JSON响应的结果Android+Reformation+Moshi   java透明JPanel   java Hibernate。getClass(对象代理)返回类,如何取而代之的是类<T>?   java Maven可以将模块部署到JBoss吗?   java如何在方向改变时处理服务   java将大量字符串加载到我的ArrayList中,我不想阻塞我的类   只使用Java流来映射是好的吗?   运行时的java编译时类型   java微小的图像,并没有旋转,但仍然会脱离内存错误:位图大小超过VM预算   java正在使用Intent启动新活动。安卓的NPE。所容纳之物ContextWrapper。getPackageName   用Java实现Comparator类   java Jtable requestFocusInWindow在第二次调用时失败   java如何导出包含excel文件和javafx的Maven项目?   使用POI的HSSFDataFormat定制java日期格式   java这两段代码之间的区别是什么?   运行简单swing程序时出现java错误