Souper

Software screenshot:
Souper
Podrobnosti Software:
Verze: 1.0.1
Datum uploadu: 20 Feb 15
Licence: Volný
Popularita: 4

Rating: nan/5 (Total Votes: 0)

Souper je nástroj Python pro programátory. Nabízí integrovanou paměť remizoval spolu s indexy v katalogu. Záznamy v skladu jsou obecné. Je možné uložit všechna data na záznamu, pokud je perzistentní pickable v ZODB.
Souper lze použít v jakékoliv aplikaci python pomocí ZODB, například pyramidy nebo Plone.
Použití Souper
Poskytnutí Locator
Polévky jsou vyhledávány podle přizpůsobení souper.interfaces.IStorageLocator k nějakému kontextu. Souper neposkytuje žádnou výchozí vyhledávač. Takže první, kdo musí být poskytnuty. Předpokládejme, že kontext je nějaký trvalý dict-jako instance:
>>> Z zope.interface dovozu realizátora
>>> Z zope.interface dovozu rozhraní
>>> Z zope.component dovozu provideAdapter
>>> Z souper.interfaces import IStorageLocator
>>> Z souper.soup dovozních SoupData
>>>implementer (IStorageLocator)
... Třída StorageLocator (objekt):
...
... Def __init __ (self, kontext):
... Self.context = kontext
...
... Def skladování (self, soup_name):
... Pokud soup_name ne v self.context:
... Self.context [soup_name] = SoupData ()
... Návrat self.context [soup_name]
>>> ProvideAdapter (StorageLocator, přizpůsobí = [Rozhraní])
Takže máme lokátor vytvoření polévky podle názvu běhu. Nyní je snadné se dostat polévku podle jména:
>>> Z souper.soup dovozu get_soup
>>> Polévka = get_soup ("mysoup", kontext)
>>> Polévka

Poskytnutí katalogu Factory
V závislosti na vašich potřebách katalogu a její indexy mohou se lišit od use-case použít případu. Továrna Katalog je zodpovědný za vytvoření katalogu pro polévku. Továrna je pojmenovaný nástroj, kterým se provádí souper.interfaces.ICatalogFactory. Název nástroje má stejný jako jsou polévky.
Zde repoze.catalog se používá, a nechat indexy přístup k údajům o záznamech podle klíčového NodeAttributeIndexer se používá. Ve zvláštních případech jeden může psát své vlastní indexery, ale výchozí jeden je v pořádku, po většinu času:
>>> Z souper.interfaces import ICatalogFactory
>>> Z souper.soup dovozu NodeAttributeIndexer
>>> Z zope.component dovozu provideUtility
>>> Z repoze.catalog.catalog import katalogu
>>> Z repoze.catalog.indexes.field dovozu CatalogFieldIndex
>>> Z repoze.catalog.indexes.text dovozu CatalogTextIndex
>>> Z repoze.catalog.indexes.keyword dovozu CatalogKeywordIndex
>>>implementer (ICatalogFactory)
... Třída MySoupCatalogFactory (objekt):
...
... Def __call __ (self, context = None):
... Katalog = katalog ()
... Userindexer = NodeAttributeIndexer ("uživatel"),
... Katalog [u'user '] = CatalogFieldIndex (userindexer)
... Textindexer = NodeAttributeIndexer ('text ")
... Katalog [u'text '] = CatalogTextIndex (textindexer)
... keywordindexer = NodeAttributeIndexer ("klíčová slova")
... Katalog [u'keywords '] = CatalogKeywordIndex (keywordindexer)
... Návrat katalog
>>> ProvideUtility (MySoupCatalogFactory (), name = "mysoup")
Továrna Katalog slouží polévka, interní ale pouze jeden může chtít zjistit, jestli to funguje:
>>> Catalogfactory = getUtility (ICatalogFactory, name = "mysoup")
>>> Catalogfactory

>>> Katalog = catalogfactory ()
>>> seřazené (catalog.items ())
[(u'keywords ", ),
(U'text ", ),
(U'user ", )]
Přidávání záznamů
Jak bylo uvedeno výše souper.soup.Record je jediný druh dat přidaných do polévky. Záznam má atributy, které obsahují data:
>>> Z souper.soup dovozu get_soup
>>> Z souper.soup Exportovat záznam
>>> Polévka = get_soup ("mysoup", kontext)
>>> Záznam = Record ()
>>> record.attrs ['uživatel'] = 'user1 "
>>> record.attrs ['text'] = u'foo bar Baz "
>>> record.attrs ['klíčová slova'] = [u'1 ', u'2 ", u" a uuml;']
>>> Record_id = soup.add (záznam)
Záznam může obsahuje další záznamy. Ale index ně bylo by třeba vlastní děličku, takže usally conatined záznamy jsou cenné pro pozdější zobrazení, ne pro hledání:
>>> Rekord ['subrecord'] = Record ()
>>> záznam ['homeaddress']. attrs ['zip'] = '6020'
>>> záznam ['homeaddress']. attrs ['město'] = 'Innsbruck'
>>> Záznam ['homeaddress']. Attrs ["země"] = "Rakousko"
Přístupové údaje
I bez jakéhokoliv dotazu je možné záznam zašel podle ID:
>>> Z souper.soup dovozu get_soup
>>> Polévka = get_soup ("mysoup", kontext)
>>> Záznam = soup.get (record_id)
Všechny záznamy lze přistupovat pomocí využití kontejneru btree:
>>> soup.data.keys () [0] == record_id
Pravdivý
Query údaje
Jak dotaz katalog repoze je dokumentován dobře. Třídění funguje stejně příliš. Dotazy jsou předány do polévek způsobu dotazu (který používá tehdy repoze katalog). Vrací generátoru:
>>> Z repoze.catalog.query importní
>>> [R k r v soup.query (EQ ("uživatel", "user1"))]
[]
>>> [R o r u soup.query (EQ ("uživatel", "nonexists"))]
[]
Chcete-li získat také velikost výsledné sady projít with_size = true k dotazu. První položka vrácený generátoru je velikost:
>>> [R k r v soup.query (EQ ("uživatel", "user1"), with_size-True)]
[1, ]
Pro optimalizaci práce s velkými výsledku určuje člověk nemusí načíst záznam, ale generátor vrací Nízká hmotnost předmětů. Záznamy jsou přinesl na výzvu:
>>> Líný = [l k l v soup.lazy (EQ ('name', 'name'))]
>>> Líný
[
>>> Líný [0] ()

Zde velikost je předán jako první hodnota geneartor příliš, pokud with_size = true je podán.
Smazat záznam
Chcete-li odstranit záznam z polévky pythonu del se používá jako jeden by to na jakémkoliv dict:
>>> Del polévka [record_id]
Indexovat
Poté, co údaje záznamy změnil potřebuje REINDEXOVAT:
>>> record.attrs ['uživatel'] = 'user1 "
>>> Soup.reindex (záznamy = [záznam])
Někdy se člověk může chtít indexaci všechna data. Pak indexaci musí být volána bez parametrů. To může chvíli trvat:
>>> Soup.reindex ()
Znovu katalog
Usally poté, co byla provedena změna katalog továrny - tedy nějaký index byl přidán - přestavět katalogu jsem potřeboval. Nahrazuje aktuální katalog s novou vytvořeného v továrně katalogu a reindexes všechna data. To může trvat nějakou dobu:
>>> Soup.rebuild ()
Obnovit (nebo zrušte) polévku
Chcete-li odstranit všechna data z polévky a prázdná a znovu sestavit katalog volání jasné. Pozor: všechna data ztracena!
>>> Soup.clear ()
Poznámky k instalaci
Aby bylo možné použít Souper node.ext.zodb je potřeba. Vzhledem k tomu, beta byl propuštěn nebyl vydání (bude provedeno brzy). Zkontrolujte pypi, zda je tam, jinak prosím přines node.ext.zodb z GitHub

Co je nového v této verzi:.

  • PEP-8. [Rnix, 2012-10-16]
  • Python 2.7 Support. [Rnix, 2012-10-16]
  • Fix dokumentace.

Požadavky na :

  • Python

Ostatní software developer BlueDynamics Alliance

node.ext.zodb
node.ext.zodb

20 Feb 15

yafowil.plone
yafowil.plone

14 Apr 15

Komentáře k Souper

Komentáře nebyl nalezen
Přidat komentář
Zapnout obrázky!