Souper

Screenshot Software:
Souper
Mga detalye ng Software:
Bersyon: 1.0.1
I-upload ang petsa: 20 Feb 15
Nag-develop: BlueDynamics Alliance
Lisensya: Libre
Katanyagan: 4

Rating: nan/5 (Total Votes: 0)

Souper ay isang tool Python para sa mga programmer. Nag-aalok ito ng pinagsamang imbakan nakatali kasama ng mga ini-index sa isang catalog. Ang mga tala sa imbakan ay generic. Posible upang mag-imbak ng anumang data sa isang record kung ito ay paulit-ulit na pickable sa ZODB.
Souper maaaring gamitin ginagamit sa anumang python application gamit ang ZODB, tulad ng Pyramid o Plone.
Ang paggamit ng Souper
Ang paglalagay ng isang Naghahanap na
Mga Sopas ay tumingala pamamagitan ng pag-angkop souper.interfaces.IStorageLocator sa ilang mga konteksto. Souper ay hindi nagbibigay ng anumang mga default na tagahanap. Kaya una kailangan mong ibigay. Sabihin ipagpalagay na konteksto ay ang ilang mga paulit-ulit na dict-tulad ng halimbawa:
>>> Mula zope.interface import implementer
>>> Mula zope.interface import Interface
>>> Mula zope.component import provideAdapter
>>> Mula souper.interfaces-import IStorageLocator
>>> Mula souper.soup import SoupData
>>>implementer (IStorageLocator)
... Klase StorageLocator (object):
...
... Def __init __ (sa sarili, konteksto):
... Self.context = konteksto
...
... Def imbakan (sa sarili, soup_name):
... Kung hindi soup_name sa self.context:
... Self.context [soup_name] = SoupData ()
... Balik self.context [soup_name]
>>> ProvideAdapter (StorageLocator, adapts = [Interface])
Kaya mayroon kaming tagahanap ng paglikha ng Sopas ayon sa pangalan nang madalian. Ngayon madali nito upang makakuha ng isang sopas ayon sa pangalan:
>>> Mula souper.soup import get_soup
>>> Sopas = get_soup ('mysoup', konteksto)
>>> Sopas

Ang paglalagay ng isang factory Catalog
Depende sa iyong mga pangangailangan ang katalogo at ini-index nito ay maaaring iba ang hitsura mula sa paggamit-case na gamitin-case. Ang factory katalogo ay responsable upang lumikha ng isang catalog para sa isang sopas. Ang pabrika ay isang pinangalanang utility pagpapatupad souper.interfaces.ICatalogFactory. Ang pangalan ng utility ay sa parehong ang bilang ng sopas mayroon.
Narito repoze.catalog ay ginagamit at upang ipaalam ang ini-index-access ang data sa mga talaan ng key ang NodeAttributeIndexer ang gagamitin. Para sa mga espesyal na mga kaso ay maaari isa sumulat nito custom indexers, ngunit ang default na isa ay masarap na ang karamihan sa mga oras:
>>> Mula souper.interfaces-import ICatalogFactory
>>> Mula souper.soup import NodeAttributeIndexer
>>> Mula zope.component import provideUtility
>>> Mula repoze.catalog.catalog Katalogo ng pag-import
>>> Mula repoze.catalog.indexes.field import CatalogFieldIndex
>>> Mula repoze.catalog.indexes.text import CatalogTextIndex
>>> Mula repoze.catalog.indexes.keyword import CatalogKeywordIndex
>>>implementer (ICatalogFactory)
... Klase MySoupCatalogFactory (object):
...
... Def __call __ (sa sarili, konteksto = Wala):
... Catalog = Catalog ()
... Userindexer = NodeAttributeIndexer ('user')
... Catalog [u'user '] = CatalogFieldIndex (userindexer)
... Textindexer = NodeAttributeIndexer ('teksto')
... Catalog [u'text '] = CatalogTextIndex (textindexer)
... Keywordindexer = NodeAttributeIndexer ('mga keyword')
... Catalog [u'keywords '] = CatalogKeywordIndex (keywordindexer)
... Balik katalogo
>>> ProvideUtility (MySoupCatalogFactory (), name = "mysoup")
Ang factory katalogo ay ginagamit sopas-panloob lamang maliban sa isa ay maaaring gusto mong tingnan kung ito ay gumagana fine:
>>> Catalogfactory = getUtility (ICatalogFactory, pangalan = 'mysoup')
>>> Catalogfactory

>>> Catalog = catalogfactory ()
>>> Pinagsunod-sunod (catalog.items ())
[(U'keywords ', ),
(U'text ', ),
(U'user ', )]
Pagdaragdag ng mga talaan
Tulad ng nabanggit sa itaas ng souper.soup.Record ay ang isa at tanging uri ng data idinagdag sa sopas. May mga katangian na naglalaman ng mga data A record:
>>> Mula souper.soup import get_soup
>>> Mula souper.soup Record import
>>> Sopas = get_soup ('mysoup', konteksto)
>>> Talaan = Record ()
>>> Record.attrs ['user'] = 'user1'
>>> Record.attrs ['teksto'] = u'foo bar baz '
>>> Record.attrs ['mga keyword'] = [u'1 ', u'2', u '& uuml;']
>>> Record_id = soup.add (record)
Naglalaman A record ay maaaring iba pang mga talaan. Ngunit na i-index ang mga ito ay kailangan ng isa ng isang pasadyang indexer, kaya usally conatined mga talaan ay mahalaga para ipakita sa ibang pagkakataon, hindi para sa paghahanap:
>>> Record ['subrecord'] = Record ()
>>> Record ['homeaddress']. Attrs ['zip'] = '6020'
>>> Record ['homeaddress']. Attrs ['bayan'] = 'Innsbruck'
>>> Record ['homeaddress']. Attrs ['bansa'] = 'Austria'
-Access ang data
Kahit na walang anumang mga query ng isang talaan ay maaaring kinuha sa pamamagitan id:
>>> Mula souper.soup import get_soup
>>> Sopas = get_soup ('mysoup', konteksto)
>>> Talaan = soup.get (record_id)
Lahat ng mga talaan ay maaaring ma-access gamit ang paggamit ng container BTree:
>>> Soup.data.keys () [0] == record_id
Totoo
Data ng query
Paano i-query ang isang repoze katalogo ay dokumentado na rin. -Uuri-uri ay gumagana sa parehong masyadong. Mga Query ay ipapasa sa pamamaraan query Sopas (na gumagamit pagkatapos ay repoze catalog). Nagbabalik ito ng generator:
>>> Mula repoze.catalog.query import Eq
>>> [R para sa r soup.query (Eq ('user', 'user1'))]
[<-Record sa bagay na 'Wala' sa ...>]
>>> [R para sa r soup.query (Eq ('user', 'nonexists'))]
[]
Upang makakuha din ang laki ng mga hanay ng resulta magpasa ng isang with_size = True sa query. Ang unang item na ibinalik sa pamamagitan ng generator ay ang sukat:
>>> [R para sa r soup.query (Eq ('user', 'user1'), with_size-True)]
[1, <-record sa bagay na 'Wala' sa ...>]
Upang i-optimize ang pamamahala ng malaking resulta nagtatakda ng isang hindi maaaring kunin ang talaan ngunit isang generator bumabalik na liwanag object timbang. Records ay kinuha sa tawag:
>>> Tamad = [l l para sa soup.lazy (Eq ('pangalan', 'name'))]
>>> Tamad
[,
>>> Tamad [0] ()
<-Record sa bagay na 'Wala' sa ...>
Narito ang laki ay naipasa bilang unang halaga ng geneartor masyadong kung with_size = True Lumipas.
Tanggalin ang isang talaan
Upang alisin ang isang tala mula sa sopas python del ay ginagamit tulad ng isa gagawin sa anumang dict:
>>> Del sopas [record_id]
Reindex
Pagkatapos ng data talaan nagbago na kailangan nito ng reindex:
>>> Record.attrs ['user'] = 'user1'
>>> Soup.reindex (mga tala = [record])
Minsan maaaring gusto ng isa upang reindex lahat ng data. Pagkatapos reindex ay upang matawag nang walang mga parameter. Maaaring magtagal ng habang:
>>> Soup.reindex ()
Muling itayo katalogo
Usally pagkatapos ng pagbabago ng factory catalog ay ginawa - ibig sabihin, ang ilang mga index ay naidagdag - isang muling itayo ng katalogo kailangan i. Ito ang papalit sa kasalukuyang catalog gamit ang isang bago nilikha ng factory katalogo at reindexes lahat ng data. Maaari tumagal ito habang:
>>> Soup.rebuild ()
I-reset ang (o i-clear) ang sopas
Upang alisin ang lahat ng data mula sa sopas at walang laman at muling itayo ang tawag malinaw catalog. Pansin: ang lahat ng data ay nawala!
>>> Soup.clear ()
Mga Tala Pag-install
Upang magamit souper node.ext.zodb ay kinakailangan. Bilang ito beta ay inilabas walang release (ay tapos na sa lalong madaling panahon). Mangyaring suriin pypi kung ito ay doon, kung hindi man mangyaring kunin ang node.ext.zodb mula sa github

Ano ang bagong sa paglabas:.

  • sigla-8. [Rnix, 2012/10/16]
  • Python 2.7 Support. [Rnix, 2012/10/16]
  • babasahin Fix.

Mga Kinakailangan :

  • Python

Iba pang mga software developer ng BlueDynamics Alliance

yafowil.plone
yafowil.plone

14 Apr 15

node.ext.zodb
node.ext.zodb

20 Feb 15

bdajax
bdajax

14 Apr 15

lineage.registry
lineage.registry

14 Apr 15

Mga komento sa Souper

Mga Komento hindi natagpuan
Magdagdag ng komento
I-sa mga imahe!