dundas rest api的python接口。
pydundas的Python项目详细描述
管理Dundas的会话。
说明
邓达斯有一个非常完整的REST API。
具有完整性的复杂性,这个模块将帮助您在 更简单的方法。
为什么此模块有用
它目前为你做三件事。
如果在context manager中使用dundas.Session
,
无论发生什么,上下文管理器都会自动登录和退出。你可以
将会话对象用作普通对象,只要不忘记登录和退出
你自己。
对api的每个调用都需要有相同的sessionId
参数。此模块创建
为您提供get
、post
和delete
的快捷方式,让您的生活更轻松。你不需要
要每次重复主机、api路径前缀或sessionid。
一些api调用被移植,可能有helper方法。我正在根据 需要和使用,所以我不希望所有的东西都是自己移植的。
安装
简单地使用pip,从pypi:
python3 -m pip install pydundas
或者,假设您没有全局存储模块的权限:
python3 -m pip install --user pydundas
这个模块也应该能够与python2一起工作,但是它还没有被测试,而且python2将在几分钟内结束生命。 几个月了,反正我没有调查过。
示例
您可以在一个目录中看到所有的examples。
下面的所有示例都假设有一个url
、user
和pwd
变量。
与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文件中读取凭据
如果您有一个带有user
、pwd
和url
键的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'))
开发
您可以使用conda
或virtualenv
。大多数相关命令都在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