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第三方库


热门话题
JavaSpring异步数据库交互   java中的正则表达式模式/数组问题   swing在Java中设置按钮的位置   java如何实现基于松散耦合的代码散播主方法   velocity模板渲染的java过滤器问题   java如何在liferay中使用EmailAddressLocalService   多线程如何确保长时间运行的Java线程永不消亡   java如何以编程方式在Android启动器之间切换   安卓中的java解析查询问题   Java中的变量浅拷贝整数   SimpleDataFormat中月份的java奇怪问题   java如何在输入流中间读取偏移量?   使用MyComparator类的java排序ArrayList   java HeapDumpOnOutOfMemoryError创建空的hprof文件   java“around”通知的内容可以从单独的函数执行吗?   java将组件添加到我的GridBagLayout会将其他组件移到最右边   带有“WHERE”选择参数的java Android SQLite查询不起作用   安卓 Java NPE错误(尝试在空对象引用上调用虚拟方法)   java Print 2并排排列的ArrayList