连接到poplus组件的通用python绑定

poplus-pci的Python项目详细描述


 _____               _
|  __ \             | |
| |__) |___   _ __  | | _   _  ___
|  ___// _ \ | '_ \ | || | | |/ __|
| |   | (_) || |_) || || |_| |\__ \
|_|    \___/ | .__/ |_| \__,_||___/
  _____      | |                                            _
 / ____|     |_|                                           | |
| |      ___   _ __ ___   _ __    ___   _ __    ___  _ __  | |_
| |     / _ \ | '_ ` _ \ | '_ \  / _ \ | '_ \  / _ \| '_ \ | __|
| |____| (_) || | | | | || |_) || (_) || | | ||  __/| | | || |_
 \_____|\___/ |_| |_| |_|| .__/  \___/ |_| |_| \___||_| |_| \__|
 _____         _         | |                _    _
|_   _|       | |        |_|               | |  (_)
  | |   _ __  | |_  ___   __ _  _ __  __ _ | |_  _   ___   _ __
  | |  | '_ \ | __|/ _ \ / _` || '__|/ _` || __|| | / _ \ | '_ \
 _| |_ | | | || |_|  __/| (_| || |  | (_| || |_ | || (_) || | | |
|_____||_| |_| \__|\___| \__, ||_|   \__,_| \__||_| \___/ |_| |_|
                          __/ |
                         |___/

连接到Poplus componentsapi的通用python绑定。


Latest version released on PyPiBuild status of the master branch on Mac/LinuxMonthly downloadsPackage license


实际上,这只是一个方便的包装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中,您可以提供userpassword

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中的条目以引用测试服务器
  • 安装oktestpip install oktest
  • 确保组件实例正在运行,并且您可以访问它们。 如果不运行实例,则无法测试此包装器。
  • 运行python test.py以运行所有测试, python test_mapit.py,或python test_popit.py来运行指定的 部件测试

更改日志

=== 0.1 (2015-02-20) ===
initial release

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

推荐PyPI第三方库


热门话题
与SpringJPA相比,JavaHazelcast内存数据网格非常慢   java如何从Netbeans从命令行创建的ant项目运行单个junit测试?   java多个eclipse概要文件   java集合存储值还是引用?   java从两个自定义对象列表中删除公共元素   java密钥库、HttpClient和HTTPS:有人能给我解释一下这段代码吗?   java使用Appengine中的域别名帐户发送电子邮件   java如何在安卓中获得用户定义的“设备名称”?   java错误:包com。太阳工具。javac。util不存在   导出后Java Eclipse项目出现问题   组织。openqa。硒。WebDriverException:java。网ConnectException:无法连接到本地主机/0:0:0:0:0:0:0   java在字符串中追加文本   java在Pig中按名称获取字段?   java如何打印播放中对象的值   Java静态修饰符对运行时性能有积极影响吗?   Java计时器   java是否值得线程化一个需要1秒才能完成的操作?