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

lineage.registry
lineage.registry

14 Apr 15

bdajax
bdajax

14 Apr 15

意見 Souper

評論沒有發現
添加評論
打開圖片!