现有数据库驱动系统的自动化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 WebClient请求级别超时抛出名为default onErrorDropped的运算符   java JAXB外部绑定文件错误   Freemarker中的java转义宏参数值   java正在同步来自不同对象{已编辑}的线程   java如何在另一个类上更新活动中的元素   java Hibernate连接查询   java可以使用Apache Crunch创建类似于图形的数据结构吗?   java在JLabel的开头加上3个点   java 安卓应用程序显示线程错误   java@RequestBody在Spring中总是空的   java Android异步任务永远不会结束   具有多个属性的java Jaxws枚举   java中的安卓 Stripe InvalidRequestException   多线程java。util。非多线程程序中的ConcurrentModificationException   Minecraft Java插件如何删除HashMap中存储的所有块   空Java字符串的大小   从AJP连接器请求检索Shibboleth属性的java   oracle11g将Java类文件加载到Oracle数据库