Souper

Sagteware kiekie:
Souper
Sagteware besonderhede:
Weergawe: 1.0.1
Upload datum: 20 Feb 15
Ontwikkelaar: BlueDynamics Alliance
Lisensie: Gratis
Populariteit: 4

Rating: nan/5 (Total Votes: 0)

Souper is 'n Python hulpmiddel vir programmeerders. Dit bied 'n geïntegreerde stoor vasgebind met indekse in 'n katalogus. Die rekords in die stoor is generiese. Dit is moontlik om enige data op 'n rekord op te slaan as dit is 'n aanhoudende plukbare in ZODB.
Souper kan gebruik word in 'n luislang aansoek met behulp van die ZODB, soos Pyramid of Plone.
Gebruik Souper
Die verskaffing van 'n Locator
Sop opgekyk deur die aanpassing souper.interfaces.IStorageLocator sommige konteks. Souper voorsien geen verstek locator. So die eerste een moet voorsien word. Kom ons veronderstel konteks is 'n paar hardnekkige dict-agtige byvoorbeeld:
>>> Van zope.interface invoer implementeerder
>>> Van zope.interface invoer Interface
>>> Van zope.component invoer provideAdapter
>>> Van souper.interfaces invoer IStorageLocator
>>> Van souper.soup invoer SoupData
>>>implementer (IStorageLocator)
... Klas StorageLocator (voorwerp):
...
... Def __init __ (self, konteks):
... Self.context = konteks
...
... Def stoor (self, soup_name):
... As soup_name nie in self.context:
... Self.context [soup_name] = SoupData ()
... Terugkeer self.context [soup_name]
>>> ProvideAdapter (StorageLocator, aanpas = [Interface])
Dus het ons locator skep sop by die naam op die vlieg. Nou is sy maklik om 'n sop te kry deur die naam:
>>> Van souper.soup invoer get_soup
>>> Sop = get_soup ('mysoup', konteks)
>>> Sop

Die verskaffing van 'n Winkel Factory
Afhangende van jou behoeftes die katalogus en sy indekse kan anders lyk uit die gebruik-geval te gebruik-geval. Die katalogus fabriek is verantwoordelik om 'n katalogus vir 'n sop te skep. Die fabriek is 'n naam nut implementering souper.interfaces.ICatalogFactory. Die naam van die nut het om die dieselfde as die sop het.
Hier repoze.catalog gebruik en te laat die indekse toegang tot die data op die rekords deur die sleutel van die NodeAttributeIndexer gebruik word. Vir spesiale gevalle mens kan sy persoonlike index skryf nie, maar om die standaard een is goed die meeste van die tyd:
>>> Van souper.interfaces invoer ICatalogFactory
>>> Van souper.soup invoer NodeAttributeIndexer
>>> Van zope.component invoer provideUtility
>>> Van repoze.catalog.catalog invoer Winkel
>>> Van repoze.catalog.indexes.field invoer CatalogFieldIndex
>>> Van repoze.catalog.indexes.text invoer CatalogTextIndex
>>> Van repoze.catalog.indexes.keyword invoer CatalogKeywordIndex
>>>implementer (ICatalogFactory)
... Klas MySoupCatalogFactory (voorwerp):
...
... Def __call __ (self, konteks = Geen):
... Katalogus = Winkel ()
... Userindexer = NodeAttributeIndexer ('n gebruiker ')
... Katalogus [u'user '] = CatalogFieldIndex (userindexer)
... Textindexer = NodeAttributeIndexer ('text')
... Katalogus [u'text '] = CatalogTextIndex (textindexer)
... Keywordindexer = NodeAttributeIndexer ('sleutelwoorde')
... Katalogus [u'keywords '] = CatalogKeywordIndex (keywordindexer)
... Terugkeer katalogus
>>> ProvideUtility (MySoupCatalogFactory (), naam = "mysoup")
Die katalogus fabriek is gebruik sop-interne alleen nie, maar 'n mens kan hê om te kyk of dit werk goed:
>>> Catalogfactory = getUtility (ICatalogFactory, naam = 'mysoup')
>>> Catalogfactory

>>> Katalogus = catalogfactory ()
>>> Gesorteer (catalog.items ())
[(U'keywords ', ),
(U'text ', ),
(U'user ', )]
Toevoeging van rekords
Soos hierbo genoem die souper.soup.Record is die een en enigste soort data by die sop. 'N rekord eienskappe wat die data:
>>> Van souper.soup invoer get_soup
>>> Van souper.soup invoer Rekord
>>> Sop = get_soup ('mysoup', konteks)
>>> Rekord = Rekord ()
>>> Record.attrs ['n gebruiker '] =' gebruiker1 '
>>> Record.attrs ['teks'] = u'foo bar baz '
>>> Record.attrs ['sleutelwoorde'] = [u'1 ', u'2', u '& uuml;']
>>> Record_id = soup.add (rekord)
'N Rekord kan bevat ander rekords. Maar na die indeks hulle een nodig sou 'n persoonlike indexer, so usally conatined rekords is waardevol vir later vertoon, nie vir die soek:
>>> Rekord ['subrecord'] = Rekord ()
>>> Rekord ['homeaddress']. Attrs ['zip'] = '6020'
>>> Rekord ['homeaddress']. Attrs ['dorp'] = 'Innsbruck'
>>> Rekord ['homeaddress']. Attrs ['land'] = 'Oostenryk
Toegang data
Selfs sonder enige navraag 'n rekord kan deur id gehaal word:
>>> Van souper.soup invoer get_soup
>>> Sop = get_soup ('mysoup', konteks)
>>> Rekord = soup.get (record_id)
Alle rekords kan verkry word deur middel van die benutting van die houer BTree:
>>> Soup.data.keys () [0] == record_id
True
Navraag data
Hoe om 'n repoze katalogus te bevraagteken is goed gedokumenteer. Sorteer werk dieselfde ook. Navrae word geslaag om sop navraag metode (wat gebruik dan repoze katalogus). Dit gee 'n kragopwekker:
>>> Van repoze.catalog.query invoer Aand
>>> [R vir r in soup.query (Aand ('n gebruiker ',' gebruiker1 '))]
[]
>>> [R vir r in soup.query (Aand ('n gebruiker ',' nonexists '))]
[]
Om ook die grootte van die resultaat stel slaag n with_size = Getrou aan die navraag. Die eerste item teruggestuur deur die generator is die grootte:
>>> [R vir r in soup.query (Aand ('n gebruiker ',' gebruiker1 '), with_size-True)]
[1 ]
Hantering van groot gevolg te optimaliseer stel 'n mens kan nie die rekord, maar 'n kragopwekker terugkeer ligte gewig voorwerpe te haal. Rekords word op die oproep haal:
>>> Lui = [l vir l in soup.lazy (Aand ("naam", "naam"))]
>>> Lui
[,
>>> Lui [0] ()

Hier is die grootte geslaag as eerste waarde van die geneartor ook of with_size = true is verby.
Verwyder 'n rekord
'N rekord van die sop luislang del word gebruik soos 'n mens sou doen op enige dict te verwyder:
>>> Del sop [record_id]
Indexeer
Na 'n data rekords verander dit moet 'n Indexeer:
>>> Record.attrs ['n gebruiker '] =' gebruiker1 '
>>> Soup.reindex (rekords = [rekord])
Soms wil dalk een van al die data te indekseer. Dan indekseer het genoem te word sonder parameters. Dit kan 'n rukkie neem:
>>> Soup.reindex ()
Herbou katalogus
Usally na 'n verandering van katalogus fabriek is gemaak - dit wil sê 'n paar indeks is bygevoeg - 'n herbou van die katalogus ek nodig het. Dit vervang die huidige katalogus met 'n nuwe een geskep deur die katalogus fabriek en reindexes alle data. Dit kan, terwyl:
>>> Soup.rebuild ()
Herstel (of uit) die sop
Al die data van die sop en leë te verwyder en die herbou van die katalogus oproep duidelik. Aandag: alle data verlore!
>>> Soup.clear ()
Installasie Notes
Ten einde Souper node.ext.zodb te gebruik, is nodig. Aangesien hierdie beta is vrygestel daar was geen vrystelling (sal binnekort gedoen word). Gaan asseblief pypi as dit daar is, anders kan u gaan haal node.ext.zodb van GitHub

Wat is nuut in hierdie release:.

  • PEP-8. [Rnix, 2012/10/16]
  • Python 2.7 Ondersteuning. [Rnix, 2012/10/16]
  • Fix dokumentasie.

Vereistes :

  • Python

Ander sagteware ontwikkelaar BlueDynamics Alliance

bdajax
bdajax

14 Apr 15

node.ext.zodb
node.ext.zodb

20 Feb 15

lineage.registry
lineage.registry

14 Apr 15

Kommentaar te Souper

Kommentaar nie gevind
Kommentaar te lewer
Draai op die foto!