Souper

软件截图:
Souper
软件详细信息:
版本: 1.0.1
上传日期: 20 Feb 15
许可: 免费
人气: 4

Rating: nan/5 (Total Votes: 0)

Souper是一个Python的工具程序员。它提供了一个集成的存储在目录索引捆绑在一起。在存储中的记录是通用的。它可以存储在一个记录的任何数据,如果它是在ZODB持久可拾取。
Souper可以用在使用ZODB,如金字塔或Plone的任何蟒应用中使用。
使用Souper
提供定位器
汤是由适应souper.interfaces.IStorageLocator某些情况下抬起头来。 Souper不提供任何默认定位器。因此,第一个需要提供。假设背景是一些持久字典般的实例:
>>>从zope.interface进口实施者
>>>从zope.interface进口接口
>>>从zope.component进口provideAdapter
>>>从souper.interfaces进口IStorageLocator
>>>从souper.soup进口SoupData
>>> @implementer(IStorageLocator)
...类StorageLocator(对象):
...
...高清__init __(个体经营,上下文):
... self.context =背景
...
...高清存储(自我,soup_name):
如果soup_name不self.context ...:
... self.context [soup_name] = SoupData()
...回报self.context [soup_name]
>>> provideAdapter(StorageLocator,适应= [接口])
因此,我们必须定位在飞行创造汤的名字。现在,它很容易通过名字来获得一个汤:
>>>从souper.soup进口get_soup
>>>汤= get_soup('mysoup',上下文)
>>>汤

提供一个目录厂
根据您的需求目录和索引可能会有所不同,从用例到用例。目录工厂负责创建一个目录汤。本厂是一家名为工具实施souper.interfaces.ICatalogFactory。该实用程序的名称有到一样的汤有。
在这里,repoze.catalog被使用,让索引访问由键NodeAttributeIndexer用于记录数据。对于特殊情况下,一个可以写入其自定义的索引,但默认的是细大部分的时间:
>>>从souper.interfaces进口ICatalogFactory
>>>从souper.soup进口NodeAttributeIndexer
>>>从zope.component进口provideUtility
>>>从repoze.catalog.catalog进口目录
>>>从repoze.catalog.indexes.field进口CatalogFieldIndex
>>>从repoze.catalog.indexes.text进口CatalogTextIndex
>>>从repoze.catalog.indexes.keyword进口CatalogKeywordIndex
>>> @implementer(ICatalogFactory)
...类MySoupCatalogFactory(对象):
...
...高清__call __(个体经营,背景=无):
...目录=目录()
... userindexer = NodeAttributeIndexer('用户')
...目录[u'user'] = CatalogFieldIndex(userindexer)
... textindexer = NodeAttributeIndexer(“文本”)
...目录[u'text'] = CatalogTextIndex(textindexer)
... keywordindexer = NodeAttributeIndexer(“关键字”)
...目录[u'keywords'] = CatalogKeywordIndex(keywordindexer)
...返回目录
>>> provideUtility(MySoupCatalogFactory(),名称=“mysoup”)
目录工厂用于煲汤,仅供内部使用,但人们可能要检查它是否工作正常:
>>> catalogfactory = getUtility(ICatalogFactory,名称='mysoup“)
>>> catalogfactory

>>>目录= catalogfactory()
>>>排序(catalog.items())
[(u'keywords',),
(u'text',),
(u'user',)]
添加记录
正如上面提到的souper.soup.Record是唯一一种加入到汤数据。 A记录包含了数据属性:
>>>从souper.soup进口get_soup
>>>从souper.soup进口记录
>>>汤= get_soup('mysoup',上下文)
>>>纪录=记录()
>>> record.attrs ['用户'] ='用户1'
>>> record.attrs ['文本'] = u'foo栏巴兹“
>>> record.attrs ['关键字'] = [U'1',u'2'U'ü']
>>> record_id = soup.add(记录)
A可记录包含其他记录。但指数逐一将需要自定义索引,所以这就通常conatined记录供以后显示有价值的,而不是为搜索:
>>>纪录['子记录'] =记录()
>>>纪录['是homeAddress']。ATTRS ['拉链'] ='6020'
>>>纪录['是homeAddress']。ATTRS ['镇'] ='因斯布鲁克“
>>>纪录['是homeAddress']。ATTRS ['国家'] ='奥'
Access数据
即使没有任何查询记录可以通过ID获得:
>>>从souper.soup进口get_soup
>>>汤= get_soup('mysoup',上下文)
>>>纪录= soup.get(record_id)
所有记录可以通过利用容器B树进行访问:
>>> soup.data.keys()[0] == record_id

查询数据
如何查询repoze目录是记录良好。排序的工作也一样。查询传递给汤查询方法(使用再repoze目录)。它会返回一个生成器:
>>>从repoze.catalog.query进口方程
>>> [R的R在soup.query(公式('用户','USER1'))
[]
>>> [R的R在soup.query(公式('用户','nonexists'))
[]
也得到结果集的大小通过一个with_size = true来查询。由发生器返回的第一项是大小:
>>> [对R在soup.query R(方程(“用户”,“用户1”),with_size-真)
[1,]
为了优化处理大的结果将设置一个可以不来获取记录,但发电机返回重量轻的物体。记录上的电话进账:
>>>为lazy = [在soup.lazy升的升(公式('名','名'))
>>>懒
[<在... souper.soup.LazyRecord对象>
>>>懒[0]()

在这里,如果with_size = TRUE传递大小传递的geneartor过的第一个值。
删除一条记录
从汤蟒蛇德尔用于就像人会做任何字典中删除一条记录:
>>>德尔汤[record_id]
REINDEX
经过一个记录数据改变它需要一个重新索引:
>>> record.attrs ['用户'] ='用户1'
>>> soup.reindex(记录= [记录])
有时,人们可能要重新索引的所有数据。然后,重新索引已被称为不带参数。这可能需要一段时间:
>>> soup.reindex()
重建目录
被做编目工厂的改变后,这就通常 - 即一些指标加入 - 重建我所需要的目录。它取代了当前目录由目录工厂创建一个新的和重新索引的所有数据。这可能需要同时:
>>> soup.rebuild()
复位(或清除)汤
要从汤和清空所有数据,并重建目录通话清晰。注意:所有的数据都将丢失!
>>> soup.clear()
安装说明
为了使用souper node.ext.zodb是必要的。由于这个测试版发布也没有发布(即将完成)。请检查的PyPI如果它是存在的,否则请从github上获取node.ext.zodb

什么在此版本中是新的

  • 在PEP-8。 [rnix,2012年10月16日]
  • 在Python的2.7支持。 [rnix,2012年10月16日]
  • 修正文件。

要求

  • 在Python中

显影剂的其他软件 BlueDynamics Alliance

vdexcsv
vdexcsv

11 May 15

cone.ugm
cone.ugm

20 Feb 15

bdajax
bdajax

14 Apr 15

yafowil.plone
yafowil.plone

14 Apr 15

意见 Souper

评论没有发现
添加评论
打开图片!