连接到poplus组件的通用python绑定
poplus-pci的Python项目详细描述
_____ _ | __ \ | | | |__) |___ _ __ | | _ _ ___ | ___// _ \ | '_ \ | || | | |/ __| | | | (_) || |_) || || |_| |\__ \ |_| \___/ | .__/ |_| \__,_||___/ _____ | | _ / ____| |_| | | | | ___ _ __ ___ _ __ ___ _ __ ___ _ __ | |_ | | / _ \ | '_ ` _ \ | '_ \ / _ \ | '_ \ / _ \| '_ \ | __| | |____| (_) || | | | | || |_) || (_) || | | || __/| | | || |_ \_____|\___/ |_| |_| |_|| .__/ \___/ |_| |_| \___||_| |_| \__| _____ _ | | _ _ |_ _| | | |_| | | (_) | | _ __ | |_ ___ __ _ _ __ __ _ | |_ _ ___ _ __ | | | '_ \ | __|/ _ \ / _` || '__|/ _` || __|| | / _ \ | '_ \ _| |_ | | | || |_| __/| (_| || | | (_| || |_ | || (_) || | | | |_____||_| |_| \__|\___| \__, ||_| \__,_| \__||_| \___/ |_| |_| __/ | |___/
连接到Poplus componentsapi的通用python绑定。
实际上,这只是一个方便的包装Tortilla泛型 api包装器,附带一些使用poplus组件api的专门说明。
与其他包装相比,玉米饼的主要优势在于它允许通过 完整的面向对象接口,无论是在请求数据时,还是在分析结果时。
结果从json转换为python字典,然后进行分组。
安装
poplus pci作为pypi上的一个模块提供,要安装,只需运行:
pip install poplus-pci
或者,您可以克隆此repo并根据需要进行安装。
快速启动
首先,让我们尝试对mysociety中popit的legisladores-ar实例进行只读访问, 获取阿根廷议会政治组织的页面列表:
frompciimportPopitpopit=Popit(instance='legisladores-ar',host='popit.mysociety.org',)
- instance
- 要指向的实例的名称。 一次安装可以有多个。
- host
- popit服务器的主机名。
一旦创建了一个实例,就很容易访问数据, 使用完全面向对象的界面:
os=popit.organizations.get()# there are 65 organizationsprint(os.total)# but only 30 have been grabbedprint(o.page)fori,oinenumerate(os.result,start=1):print("{0}: {1}".format(i,o.name))# how to get next page?printos.next_url# get itos=popit.organizations.get(params={'page':2})
写访问(POPIT)
确保你有所有你需要的信息。然后使用PopIt
构造函数获取对象。
frompciimportPopitpopit=Popit(instance='openpolistest',host='popit.mysociety.org',api_key='-YOUR-API-KEY-',)
- api_key
- 这是您可以通过单击 在您的实例的popit web接口中“get api key”,作为 described in the documentation.
那么基本的crud操作将是:
# createeinstein=popit.persons.post(data={'name':'Albert Einstein','links':[{'url':'http://www.wikipedia.com/AlbertEinstein','note':'Wikipedia'}]})# readpopit.persons(einstein.result.id).get()# update (note: is PUT, not PATCH)popit.persons(einstein.result.id).put(data={"name":"Albert Einstein"})# deletepopit.persons(einstein.result.id).delete()
如果您仍在使用较旧的popit实例且尚未升级 您的新的、更安全的身份验证系统的帐户 在api_key中,您可以提供user和password:
popit=Popit(instance='openpolistest',host='popit.mysociety.org',user='-USERNAME-',password='-PASSWORD-')
- user
- 您的用户名,您创建实例时使用的电子邮件地址
- password
- 创建实例时收到的电子邮件密码
popit搜索api
几乎所有的api都可以轻松地包装在pci组件上。
从popit实例开始,可以通过搜索api进行查询:
popit.search.organizations.get(params={'q':'trabajo'})popit.search.organizations.get(params={'q':'trabajadores'})
MAPIT访问
mapit具有只读访问权限,并且api不符合rest标准。
默认的MAPIT实例是mysociety的全局MAPIT: http://global.mapit.mysociety.org/。
MAPIT API调用^{TT10}$,可以直接调用, 通过Tortilla包装实用程序,或使用MAPIT帮助程序。
mapit=Mapit()self.m.point.get('4326/12.5042,41.8981')self.m.areas_overpoint(lat='41.8981',lon='12.5042',srid='4326',box=True)
其他的帮助者是可用的,并将在未来根据需要实施。 您可以在pci/__init__.py文件中找到它们。
缓存
要限制对api端点的请求量,可以使用缓存机制。 在创建PCI实例时,可以使用cache_lifetime参数激活它:
mapit=Mapit(cache_lifetime=60,)
但是,可以忽略缓存一起执行单个请求:
mapit.point.get('4326/12.5042,41.8981',ignore_cache=True)
要求
如果不使用pip安装模块,还需要:
- 玉米饼(pip install tortilla)
如何运行测试
- 将文件config_sample.py复制到config_test.py
- 更改config_test.py中的条目以引用测试服务器
- 安装oktest(pip install oktest)
- 确保组件实例正在运行,并且您可以访问它们。 如果不运行实例,则无法测试此包装器。
- 运行python test.py以运行所有测试, python test_mapit.py,或python test_popit.py来运行指定的 部件测试
更改日志
=== 0.1 (2015-02-20) === initial release