dundas rest api的python接口。

pydundas的Python项目详细描述


管理Dundas的会话。

说明

邓达斯有一个非常完整的REST API

具有完整性的复杂性,这个模块将帮助您在 更简单的方法。

为什么此模块有用

它目前为你做三件事。

如果在context manager中使用dundas.Session, 无论发生什么,上下文管理器都会自动登录和退出。你可以 将会话对象用作普通对象,只要不忘记登录和退出 你自己。

对api的每个调用都需要有相同的sessionId参数。此模块创建 为您提供getpostdelete的快捷方式,让您的生活更轻松。你不需要 要每次重复主机、api路径前缀或sessionid。

一些api调用被移植,可能有helper方法。我正在根据 需要和使用,所以我不希望所有的东西都是自己移植的。

安装

简单地使用pip,从pypi

python3 -m pip install pydundas

或者,假设您没有全局存储模块的权限:

python3 -m pip install --user pydundas

这个模块也应该能够与python2一起工作,但是它还没有被测试,而且python2将在几分钟内结束生命。 几个月了,反正我没有调查过。

示例

您可以在一个目录中看到所有的examples

下面的所有示例都假设有一个urluserpwd变量。

与Context Manager的愉快交流

withSession(user=user,pwd=pwd,url=url)asd:print(d.get('Server').text)

输出(示例):

[{"name":"winterfell","serverGroupId":1,"lastSeenTime":"2019-03-29T09:33:38.880327Z","__classType":"dundas.configuration.ServerInfo"}]

当变量d超出范围时,那么在with语句之外,您将 自动注销。

从yaml文件中读取凭据

如果您有一个带有userpwdurl键的yaml文件,那么您可以从pydundas中读取它:

user:aryapwd:'valarmorghulis'url:winterfell.got
frompydundasimportcreds_from_yamlcreds=creds_from_yaml('credentials.yaml')withSession(**creds)asd:print(d.get('Server').text)

正确处理上下文管理器中的异常

withSession(user=user,pwd=pwd,url=url)asd:d.get('you/know/nothing')

输出:

404 Client Error: Not Found for url: https://winterfell.got/api/you/know/nothing?sessionId=fbeb7897-5981-412b-a981-7783f88894bd

API调用

常数

大多数常量都可以通过它们的可读名称来使用。

frompydundasimportApi,Session,creds_from_yamlwithSession(**creds_from_yaml('credentials.yaml'))asd:a=Api(d)c=a.constant()# returns ['STANDARD_EXCEL_EXPORT_PROVIDER_ID']print(c.getNamesById('679e6337-48aa-4aa3-ad3d-db30ce943dc9'))# returns '679e6337-48aa-4aa3-ad3d-db30ce943dc9'print(c.getIdByName('STANDARD_EXCEL_EXPORT_PROVIDER_ID'))

立方体

您可以存储一个立方体,并获取有关它的一些信息:

withSession(**creds)asd:api=Api(d)capi=api.cube()cube=capi.getByPath('Awesome Project','/relevant/path')cube=capi.getByPath('DP','/CustomReports/2daysent/1mailing sendouts')ifcubeisNone:print("Gotcha, no cube named like that.")sys.exit(1)print(cube.json())print(cube.is_checked_out())cube.warehouse()print(cube.isWarehousing())cube.waitForWarehousingCompletion()

健康

您可以运行所有检查,并修复失败的检查:

withSession(**creds,loglevel='warn')asd:api=Api(d)hapi=api.health()failings=hapi.check(allchecks=True)print(failings)forfinfailings:hapi.check([f],fix=True)

通知

您可以按名称获取通知,然后运行它。

napi=api.notification()notif=napi.getExactName(name='Awesome notification')iflen(notif)!=1:print("None or more than one notification with this name.")sys.exit(1)napi.run(notif[0]['id'])

项目

例如,要查找项目的ID:

frompydundasimportApi,Session,creds_from_yamlwithSession(**creds_from_yaml('credentials.yaml'))asd:api=Api(d)project=a.project()print(project.getProjectIdByName('DP'))

开发

您可以使用condavirtualenv。大多数相关命令都在makefile中。 首先编辑makefile的第一行,以选择是否要使用conda或virtualenv。

# Build an environment with all dependencies
make devinit

# Tests
make pep8
make unittest

# Build a package
make package

# Clean up everything
make purge

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

推荐PyPI第三方库


热门话题
java Hibernate会话/模板返回null   java Bluetooth无法连接到OBD2   smartGWT中的行分隔符的java等价物?   java如何删除可执行路径错误   java使用ICE Tar库对大文件进行Tar   java Spring Boot/JavaFX:添加一个仍然可以访问JPA的关机挂钩(ctrlc)   使用输入流读取java属性文件   如何在Java中迭代HashSet元素时覆盖该元素   内容类型中的javascript set charset=“utf8”   使用cassandra触发器的java   用户界面什么是适合我的GUI(JAVA)的update()方法   Java实例控制   java前置摄像头无法在不同设备上工作   java方法组织。postgresql。jdbc。连接。createClob()尚未实现