Souper

Screenshot Software:
Souper
Detalii soft:
Versiune: 1.0.1
Incarca data: 20 Feb 15
Producător: BlueDynamics Alliance
Licenţă: Gratuit
Popularitate: 4

Rating: nan/5 (Total Votes: 0)

Souper este un instrument Python pentru programatori. Acesta oferă o stocare integrata legate împreună cu indici într-un catalog. Înregistrările din depozitarea sunt generice. Este posibil pentru a stoca toate datele pe o înregistrare dacă este pickable persistent în ZODB.
Souper pot fi folosite utilizat în orice aplicație piton cu ajutorul ZODB, cum ar fi Pyramid sau Plone.
Utilizarea Souper
Furnizarea unui Locator
Supe sunt privit în sus prin adaptarea souper.interfaces.IStorageLocator la unele context. Souper nu oferă nici implicit de localizare. Deci, trebuie mai întâi o să fie furnizate. Să presupunem context, este ceva-dict ca exemplu persistent:
>>> Din zope.interface implementator import
>>> De la Interface import zope.interface
>>> Din provideAdapter import zope.component
>>> Din souper.interfaces import IStorageLocator
>>> Din SoupData import souper.soup
>>>implementer (IStorageLocator)
... StorageLocator clasă (obiect):
...
... Def automat metodei __init __ (self, context):
... Self.context = context
...
... Def depozitare (auto, soup_name):
... Dacă nu soup_name în self.context:
... Self.context [soup_name] = SoupData ()
... Self.context întoarcere [soup_name]
>>> ProvideAdapter (StorageLocator, adaptează = [Interface])
Deci avem de localizare a crea supe după nume pe zbor. Acum este ușor pentru a obține o supă de nume:
>>> Din souper.soup get_soup import
>>> Supa = get_soup ('mysoup ", context)
>>> Supă

Furnizarea unui fabrică produse
In functie de nevoile dumneavoastra catalog și indexurile sale pot fi diferite de utilizare caz pentru a utiliza caz. Fabrica catalog este responsabil de a crea un catalog pentru o supă. Fabrica este un utilitar numit de punere în aplicare souper.interfaces.ICatalogFactory. Numele utilitate trebuie să fel ca supa au.
Aici repoze.catalog este folosit și pentru a permite indicii acces la datele de pe înregistrările de cheie NodeAttributeIndexer este utilizat. Pentru cazuri speciale se poate scrie indexatorilor sale personalizate, dar cel implicit este bine cele mai multe ori:
>>> Din souper.interfaces import ICatalogFactory
>>> Din souper.soup NodeAttributeIndexer import
>>> Din provideUtility import zope.component
>>> De la Catalog import repoze.catalog.catalog
>>> Din repoze.catalog.indexes.field CatalogFieldIndex import
>>> Din CatalogTextIndex import repoze.catalog.indexes.text
>>> Din CatalogKeywordIndex import repoze.catalog.indexes.keyword
>>>implementer (ICatalogFactory)
... MySoupCatalogFactory clasă (obiect):
...
... Def __call __ (self, context = None):
... Catalog = catalog ()
... Userindexer = NodeAttributeIndexer ("utilizator")
... Catalog [u'user '] = CatalogFieldIndex (userindexer)
... Textindexer = NodeAttributeIndexer ('text')
... Catalog [u'text '] = CatalogTextIndex (textindexer)
... keywordindexer = NodeAttributeIndexer ("Cuvinte cheie")
... Catalog [u'keywords '] = CatalogKeywordIndex (keywordindexer)
... Catalog întoarcere
>>> ProvideUtility (MySoupCatalogFactory (), name = "mysoup")
Fabrica catalog este folosit supă-internă, dar s-ar putea dori pentru a verifica dacă funcționează corect:
>>> Catalogfactory = getUtility (ICatalogFactory, name = 'mysoup')
>>> Catalogfactory

>>> Catalog = catalogfactory ()
>>> sortate (catalog.items ())
[(u'keywords ", ),
(U'text ", ),
(U'user ", )]
Adăugarea de înregistrări
După cum sa menționat mai sus souper.soup.Record este singurul tip de date adăugate la supa. O înregistrare are atribute care conțin date:
>>> Din souper.soup get_soup import
>>> De la înregistrare import souper.soup
>>> Supa = get_soup ('mysoup ", context)
>>> Înregistrare = Record ()
>>> record.attrs ["utilizator"] = 'user1 "
>>> record.attrs ['text'] = u'foo bar Baz "
>>> record.attrs ["Cuvinte cheie"] = [u'1 ", u'2, u '& uuml;']
>>> Record_id = soup.add (înregistrare)
O înregistrare poate conține alte înregistrări. Dar index le-ar avea nevoie de o indexare personalizat, înregistrările astfel usally conatined sunt valoroase pentru afișare mai târziu, nu pentru căutarea:
>>> Înregistrare ['subrecord'] = Record ()
>>> înregistrare ["homeaddress"]. attrs ['zip'] = '6020'
>>> înregistrare ["homeaddress"]. attrs ['oraș'] = 'Innsbruck'
>>> Înregistrare ["homeaddress"]. Attrs ["țară"] = "Austria"
Date de acces
Chiar și fără nici o interogare o înregistrare poate fi preluat de id:
>>> Din souper.soup get_soup import
>>> Supa = get_soup ('mysoup ", context)
>>> Înregistrare = soup.get (record_id)
Toate înregistrările pot fi accesate folosind utilizând btree recipient:
>>> soup.data.keys () [0] == record_id
Adevărat
Date de interogare
Cum pentru a interoga un catalog repoze este documentat bine. Sortarea funcționează la fel prea. Interogările sunt trecute la supe metodă de interogare (care utilizează apoi catalog repoze). Se întoarce un generator de:
>>> Din repoze.catalog.query ecuația import
>>> [R de r în soup.query (Ec ("utilizator", "user1"))]
[<Înregistrați obiect "Niciuna", la ...>]
>>> [R de r în soup.query (Ec ("utilizator", "nonexists"))]
[]
Pentru a obține, de asemenea, dimensiunea setul de rezultate trece o with_size = Adevărat la interogare. Primul element returnat de generatorul este dimensiunea:
>>> [R de r în soup.query (Ec ("utilizator", "user1"), with_size-adevărat)]
[1, <Înregistrați obiect "Niciuna", la ...>]
Pentru a optimiza manipularea rezultat seturi mari se poate să nu aducă înregistrarea ci un generator de revenirea obiecte usoare. Înregistrările sunt adus la apel:
>>> Leneș = [l pentru l în soup.lazy (Ec ("nume", "nume"))]
>>> Leneș
[,
>>> Leneș [0] ()
<Înregistrați obiect "Niciuna", la ...>
Aici dimensiunea este trecut ca prima valoare a geneartor prea cazul with_size = true este trecut.
Ștergeți o înregistrare
Pentru a elimina o înregistrare din piton supa del este utilizat ca s-ar putea face pe orice dict:
>>> Del supă [record_id]
Reindexați
După o de date înregistrări schimbat are nevoie de un Reindexați:
>>> record.attrs ["utilizator"] = 'user1 "
>>> Soup.reindex (înregistrări = [înregistrare])
Uneori, s-ar putea dori să reindexa toate datele. Apoi Reindexați trebuie să fie numit fără parametri. Este posibil să dureze un timp:
>>> Soup.reindex ()
Rebuild catalog
Usally după ce sa făcut o schimbare de fabrică catalog - adică unele indicele a adăugat - o reconstrui de catalog am nevoie. Acesta înlocuiește catalogul actual cu unul nou creat de fabrica catalog și reindexes toate datele. Este posibil să dureze în timp ce:
>>> Soup.rebuild ()
Reset (sau debifați) supa
Pentru a elimina toate datele de la supa și gol și reconstrui apelul catalog clar. Atenție: toate datele sunt pierdute!
>>> Soup.clear ()
Note Instalare
Pentru a utiliza node.ext.zodb souper este nevoie. În acest beta a fost lansat nu a existat nici o eliberare (se va face în curând). Va rugam sa verificati pypi daca este acolo, în caz contrar vă rugăm să aducă node.ext.zodb de github

Ce este nou în această versiune:.

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

Cerințe :

  • Python

Alte software-uri de dezvoltator BlueDynamics Alliance

cone.ugm
cone.ugm

20 Feb 15

node.ext.zodb
node.ext.zodb

20 Feb 15

Comentarii la Souper

Comentariile nu a fost găsit
Adauga comentarii
Porniţi pe imagini!