现有数据库驱动系统的自动化restapi

sandman的Python项目详细描述


桑德曼

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<=================73616e646d616e2e706e673f6272616e63683d6465656c6f70"/>

<<<<<<<<<<<<<<<< <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<702f73616e646d616e2e706e67"/>

<<<<<<<<< <<

<<<< <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<========"http://imimimimimimimimimim<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<646d2f73616e646d616e2e737667 "/>

主页

在网上访问sandman的主页: sandman.io

讨论

想找个地方问关于桑德曼的问题吗?查看 桑德曼-讨论和桑德曼-用户论坛!

文档

Sandman文档

"让事情休息"。有一个您想要的现有数据库 通过rest api公开?通常,你得写很多 你正在使用的orm的样板代码,然后将其集成到一些 网络框架。

我不想写样板书。

下面是从现有的 使用Sandman数据库 啊!

就这样。 sandman 然后将执行以下操作:

  • 连接到数据库并反思其内容
  • 创建并启动rest api服务
  • 创建HTML管理界面
  • 打开浏览器,进入管理界面
这是正确的。给定一个遗留数据库, sandman 不仅为您提供 rest api,它为您提供了一个漂亮的管理页面,并 打开您的浏览器 管理页 。它真的为你做了一切。

支持的数据库

默认情况下,sandman支持到同一组 数据库如sqlalchemy。就此而言 写作,包括:

  • mysql(mariadb)
  • PostgreSQL
  • sqlite
  • 甲骨文
  • Microsoft SQL Server
  • 火鸟
  • 小雨
  • Sybase
  • IBM DB2
  • SAP Sybase SQL Anywhere
  • 货币数据库

身份验证

从0.9.3版起, sandman 完全支持http basic 身份验证。有关详细信息,请参阅文档。

幕后

sandmanctl 实际上只是一个简单的包装器,它包含以下内容:

啊!

你甚至不需要告诉"sandman"你的数据库有哪些表 包含。 只需指向您的数据库并让它完成所有操作 举重

让我们开始新的服务并提出请求。当我们在I的时候T,让 通过指定 过滤项:

> python runserver.py &
* Running on http://127.0.0.1:5000/

> curl GET "http://localhost:5000/artists?Name=AC/DC"
...{"resources":[{"ArtistId":1,"Name":"AC/DC","links":[{"rel":"self","uri":"/artists/1"}]}]}

所有这些,包括过滤/搜索,都是自动可用的 从那五行代码中。

哦,这还不够吗?您还需要一个django风格的管理界面 自动生成?好的。你可能已经注意到当你跑 runserver.py 弹出一个浏览器窗口。现在该走了 看看这个。你会发现这是django风格的管理界面 你一直在烦我,看起来像这样:

< div > 管理界面awesomesauce屏幕截图

管理界面awesomesauce屏幕截图


(如果要禁用浏览器每次自动打开 sandman 开始,用 browser=false调用 activate

如果您想指定 sandman 应该生成的特定表 有空,你是怎么做到的?用这首小曲:

fromsandman.modelimportregister,ModelclassArtist(Model):__tablename__='Artist'classAlbum(Model):__tablename__='Album'classPlaylist(Model):__tablename__='Playlist'register((Artist,Album,Playlist))

如果您想为端点添加自定义逻辑呢?或者改变 终结点名称?或者更改顶级json对象名?或添加 验证?全部支持。这里有一个"奇特"的类定义:

classStyle(Model):"""Model mapped to the "Genre" table

    Has a custom endpoint ("styles" rather than the default, "genres").
    Only supports HTTP methods specified.
    Has a custom validator for the GET method.

    """__tablename__='Genre'__endpoint__='styles'__methods__=('GET','DELETE')__top_level_json_name__='Genres'@staticmethoddefvalidate_GET(resource=None):"""Return False if the request should not be processed.

        :param resource: resource related to current request
        :type resource: :class:`sandman.model.Model` or None

        """ifisinstance(resource,list):returnTrueelifresourceandresource.GenreId==1:returnFalsereturnTrue

对于sandman,需要零样板代码。实际上,使用 sandmanctl 根本不需要代码。现有数据库 结构和模式被反省,数据库表神奇地 获取restful api和管理接口。对于每张桌子, sandman 创建:

  • 正确的端点
  • 支持一组可配置的http动词
    • 发布
    • 补丁
    • 删除
  • 自动链接的适当响应
  • 表中的外键由link表示
  • 只需在上定义 validate\lt;method>; 方法即可自定义验证 您的型号
  • 通过设置 方法属性
  • 通过设置 端点方法自定义模型端点
  • 基本上是一个基于hateoas的服务,位于数据库前面

尚在积极开发中,但在任何 一个简单的事实造成的环境:

``sandman``除非添加或更改 记录你自己。它不会向现有数据库中添加额外的表,并且 不需要更改任何现有表。如果你开始 `` sandman``,使用它通过curl浏览数据库,然后停止 `` sandman``,你的数据库将处于与以前完全相同的状态 开始之前。

安装

pip安装sandman

示例应用程序

查看 sandman/test 目录。找到的应用程序 这里使用了chinook SQL数据库示例。

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

推荐PyPI第三方库


热门话题
java测试访问令牌过滤器   close()上的java Apache POI运行时异常   java为什么Eclipse中的GWT总是显示错误404?   java从socket python服务器接收消息   java mediaRecorder:start()函数失败   不关闭DB连接可能是Tomcat上Java堆溢出的原因吗?   java JFrame无法关闭   java BigQuery加载本地文件不起作用,位置有问题   java可以在递归任务中使用吗?   servlets如何从JSESSIONID加载Java HttpSession?   java将JFileChooser与PDFBox一起使用时,文件不会另存为pdf,但保存时不带扩展名   java将处理结果存储在表中   java算法发现循环世界中重叠间隔的持续时间(24小时)   在windows 10上双击Eclipse安装程序可执行文件(eclipseinstjrewin64.exe)后,java不会发生任何事情   java编译和部署自定义Solr请求处理程序   Java/Android崩溃ApacheCommonsio2。4.jar   spring web应用程序中的java集成收件箱功能   java Grizzly、Jersey和Spring自动布线问题   java如何在pom中添加jar文件依赖项。xml   关于Android中大量GUI更新编码的java概念(GUI处理程序)