Souper

Software kuvakaappaus:
Souper
Ohjelmiston tiedot:
Versio: 1.0.1
Lähetyksen päivämäärä: 20 Feb 15
Kehittäjä: BlueDynamics Alliance
Lupa: Vapaa
Suosio: 4

Rating: nan/5 (Total Votes: 0)

Souper on Python työkalu ohjelmoijille. Se tarjoaa integroituja varastointi sidotaan indeksit luettelo. Tietueet varastointi ovat yleisiä. On mahdollista tallentaa kaikki tiedot ennätys, jos se on hitaasti hajoava pickable vuonna ZODB.
Souper voidaan käyttää käyttää missä tahansa python sovellus käyttää ZODB, kuten Pyramid tai Plone.
käyttäminen Souper
Tarjoamalla Locator
Keitot ovat katseli sopeuttamalla souper.interfaces.IStorageLocator jossain yhteydessä. Souper ei tarjoa mitään oletuksena paikannin. Joten ensimmäinen tarvitse toimittaa. Oletetaan yhteydessä on joitakin pysyviä dict kaltainen esimerkiksi:
>>> Alkaen zope.interface tuonti toteuttaja
>>> Alkaen zope.interface tuonti Interface
>>> Alkaen zope.component tuonti provideAdapter
>>> Alkaen souper.interfaces tuoda IStorageLocator
>>> Alkaen souper.soup tuonti SoupData
>>>implementer (IStorageLocator)
... Luokan StorageLocator (objekti):
...
... Def __init __ (self, yhteydessä):
... Self.context = yhteydessä
...
... Def varastointi (itse, soup_name):
... Jos soup_name ei self.context:
... Self.context [soup_name] = SoupData ()
... Paluu self.context [soup_name]
>>> ProvideAdapter (StorageLocator, sopeutuu = [Liitäntä])
Joten meillä on paikannin luoda keitot nimen lennossa. Nyt saat helposti keitto nimen:
>>> Alkaen souper.soup tuonti get_soup
>>> Keitto = get_soup ('mysoup', yhteydessä)
>>> Keitto

Tarjoamalla Catalog Factory
Riippuen sinun tarvitsee luettelo ja sen indeksit saattavat näyttää erilaiselta käyttö-tapaus käyttää tapaukselta. Luettelo tehdas on vastuussa luoda luetteloomme keittoa. Tehdas on nimetty apuohjelma täytäntöönpanosta souper.interfaces.ICatalogFactory. Nimi hyödyllisyys on sama kuin keitto on.
Täällä repoze.catalog käytetään ja antaa indeksit pääsy tietoja tietueet avaimen NodeAttributeIndexer käytetään. Erityisestä tapauksissa voidaan kirjoittaa sen custom indexers, mutta oletuksena yksi on hieno suurimman osan ajasta:
>>> Alkaen souper.interfaces tuoda ICatalogFactory
>>> Alkaen souper.soup tuonti NodeAttributeIndexer
>>> Alkaen zope.component tuonti provideUtility
>>> Alkaen repoze.catalog.catalog tuonti Verkkokauppa
>>> Alkaen repoze.catalog.indexes.field tuonti CatalogFieldIndex
>>> Alkaen repoze.catalog.indexes.text tuonti CatalogTextIndex
>>> Alkaen repoze.catalog.indexes.keyword tuonti CatalogKeywordIndex
>>>implementer (ICatalogFactory)
... Luokan MySoupCatalogFactory (objekti):
...
... Def __call __ (self, context = Ei mitään):
... Luettelo = Catalog ()
... Userindexer = NodeAttributeIndexer ("käyttäjä")
... Luettelo [u'user '] = CatalogFieldIndex (userindexer)
... Textindexer = NodeAttributeIndexer ("text")
... Luettelo [u'text '] = CatalogTextIndex (textindexer)
... Keywordindexer = NodeAttributeIndexer (avainsanat)
... Luettelo [u'keywords '] = CatalogKeywordIndex (keywordindexer)
... Paluu luettelo
>>> ProvideUtility (MySoupCatalogFactory (), name = "mysoup")
Luettelo tehtaalla käytetään keitto-vain sisäiseen mutta kannattaa tarkistaa, jos se toimii hyvin:
>>> Catalogfactory = getUtility (ICatalogFactory, nimi = 'mysoup')
>>> Catalogfactory

>>> Luettelo = catalogfactory ()
>>> Järjestetty (catalog.items ())
[(U'keywords ', ),
(U'text ", ),
(U'user ", )]
Lisääminen kirjaa
Kuten edellä on mainittu souper.soup.Record on yksi ja vain, millaisia ​​tietoja lisätään keittoon. Ennätys on määritteitä sisältäviä tiedot:
>>> Alkaen souper.soup tuonti get_soup
>>> Alkaen souper.soup tuonti Record
>>> Keitto = get_soup ('mysoup', yhteydessä)
>>> Ennätys = Record ()
>>> Record.attrs ['user'] = 'user1 "
>>> Record.attrs ['teksti'] = u'foo bar baz "
>>> Record.attrs [Avainsanat] = [u'1 ', u'2 ", u" & uuml;']
>>> Record_id = soup.add (ennätys)
Rekisteröintiä voidaan sisältää muut tallenteet. Mutta indeksoida niitä olisi tarvetta mukautetun indeksointitoiminnolle, joten usally conatined tiedot ovat arvokkaita myöhemmin näyttö, ei etsimiseen:
>>> Ennätys ['alitietueen'] = Record ()
>>> Ennätys ['homeaddress']. Attrs ['zip'] = '6020'
>>> Ennätys ['homeaddress']. Attrs ['kaupunki'] = 'Innsbruck "
>>> Ennätys ['homeaddress']. Attrs ["maa"] = "Itävalta"
Access tiedot
Jopa ilman kyselyn ennätys voidaan hakea tunnus:
>>> Alkaen souper.soup tuonti get_soup
>>> Keitto = get_soup ('mysoup', yhteydessä)
>>> Ennätys = soup.get (record_id)
Kaikki äänitteet pääsee käyttämällä hyödyntäen kontti btree:
>>> Soup.data.keys () [0] == record_id
Totta
Kyselyn tiedot
Miten kysellä repoze luettelo on dokumentoitu hyvin. Lajittelu toimii samalla myös. Kyselyt välitetään keitot kyselyn menetelmä (joka käyttää sitten repoze luettelo). Se palauttaa generaattori:
>>> Alkaen repoze.catalog.query tuonti Eq
>>> [R r in soup.query (Eq ("käyttäjä", "käyttäjä1 '))]
[]
>>> [R r in soup.query (Eq ("käyttäjä", "nonexists '))]
[]
Voit myös saada koko tulosjoukon kulkea with_size = True kyselyn. Ensimmäinen erä palauttama generaattori on koko:
>>> [R r in soup.query (Eq ("käyttäjä", "user1"), with_size-True)]
[1, ]
Optimoimiseksi käsittely suuri tulosjoukkoja yksi ei voi hakea ennätys, mutta generaattorin palaavat kevyt esineitä. Records noudetaan päivystää:
>>> Laiska = [l l soup.lazy (Eq ('nimi', 'nimi'))]
>>> Laiska
[,
>>> Laiska [0] ()

Tässä koko johdetaan ensin arvo geneartor liian jos with_size = true johdetaan.
Poista levy
Voit poistaa ennätys keitto python del käytetään kuin yksi tekisi mitään dict:
>>> Del keitto [record_id]
Indeksoi
Kun tallentaa tietoja vaihdetaan se tarvitsee Indeksoi:
>>> Record.attrs ['user'] = 'user1 "
>>> Soup.reindex (kirjaa = [Record])
Joskus kannattaa indeksoida kaikki tiedot. Sitten REINDEX on kutsuttu ilman parametreja. Se voi kestää jonkin aikaa:
>>> Soup.reindex ()
Rebuild luettelo
Usally vaihduttua luettelo tehdas tehtiin - eli noin index lisättiin - uusinta luettelo i tarvitaan. Se korvaa nykyisen luettelo uuteen luotu luettelo tehtaan ja reindexes kaikki tiedot. Se voi kestää aikaa:
>>> Soup.rebuild ()
Palauta (tai poista) keitto
Voit poistaa kaikki tiedot keitto ja tyhjät ja rakentaa luettelo puhelun selvä. Huomio: kaikki tiedot menetetään!
>>> Soup.clear ()
Asennus Huomautukset
Jotta voit käyttää souper node.ext.zodb tarvitaan. Koska tämä beta julkaistiin ei ollut julkaisu (tehdään pian). Tarkista pypi jos se on siellä, muuten ota nouto node.ext.zodb päässä github.

Mitä uutta tässä julkaisussa:

  • PEP-8. [Rnix, 10.16.2012]
  • Python 2.7 tuki. [Rnix, 10.16.2012]
  • Fix asiakirjat.

Vaatimukset :

  • Python

Muu ohjelmistojen kehittäjä BlueDynamics Alliance

node.ext.zodb
node.ext.zodb

20 Feb 15

lineage.registry
lineage.registry

14 Apr 15

cone.ugm
cone.ugm

20 Feb 15

bdajax
bdajax

14 Apr 15

Kommentit Souper

Kommentteja ei löytynyt
Lisää kommentti
Ota kuvia!