Souper

Screenshot der Software:
Souper
Softwarebeschreibung:
Version: 1.0.1
Upload-Datum: 20 Feb 15
Lizenz: Frei
Popularität: 4

Rating: nan/5 (Total Votes: 0)

Souper ist ein Python-Werkzeug für Programmierer. Es verfügt über einen integrierten Speicher mit Indizes in einem Katalog verbunden. Die Datensätze in der Lagerung sind generisch. Es ist möglich, alle Daten auf einem Datensatz zu speichern, wenn es anhaltende aufsammelbare in ZODB.
Souper kann in jedem Python-Anwendung unter Verwendung der ZODB wie Pyramide oder Plone verwendet werden.
Mit Souper
Die Bereitstellung einer Locator
Suppen werden durch Anpassung souper.interfaces.IStorageLocator bis zu einem gewissen Kontext betrachtet. Souper bietet keine Standard-Locator. Also erste vorgesehen werden müssen. Nehmen wir an, Kontext einige persistent dict ähnlichen Beispiel:
>>> Von zope.interface Import Implementierer
>>> Von zope.interface Importschnittstelle
>>> Von zope.component Import provideAdapter
>>> Von souper.interfaces importieren IStorageLocator
>>> Von souper.soup Import SoupData
>>>implementer (IStorageLocator)
... Klasse StorageLocator (Objekt):
...
... Def init __ (self, Kontext):
... Self.context = Kontext
...
... Def Speicher (self, soup_name):
... Wenn soup_name nicht self.context:
... Self.context [soup_name] = SoupData ()
... Rückkehr self.context [soup_name]
>>> ProvideAdapter (StorageLocator passt = [Interface])
So haben wir Locator Schaffung Suppen namentlich im laufenden Betrieb. Jetzt ist es einfach, eine Suppe mit Namen bekommen:
>>> Von souper.soup Import get_soup
>>> Suppe = get_soup ('mysoup ", Kontext)
>>> Suppe

Die Bereitstellung einer Katalogfabrik
Je nach Bedarf der Katalog und ihre Indizes können sich von Use-Case-Fall zu bedienen suchen. Der Katalog Fabrik ist verantwortlich, einen Katalog für eine Suppe zu erstellen. Die Fabrik ist ein Dienstprogramm mit dem Namen Umsetzung souper.interfaces.ICatalogFactory. Der Name des Dienstprogramms muss der gleiche sein, der Suppe.
Hier repoze.catalog verwendet wird und die Indizes auf die Daten auf den Aufzeichnungen von Schlüssel die NodeAttributeIndexer wird verwendet, um zu lassen. Für Sonderfälle kann man seine individuelle Indexer zu schreiben, aber der Standard eines meiste Zeit ist in Ordnung:
>>> Von souper.interfaces importieren ICatalogFactory
>>> Von souper.soup Import NodeAttributeIndexer
>>> Von zope.component Import provideUtility
>>> Von repoze.catalog.catalog Import Catalog
>>> Von repoze.catalog.indexes.field Import CatalogFieldIndex
>>> Von repoze.catalog.indexes.text Import CatalogTextIndex
>>> Von repoze.catalog.indexes.keyword Import CatalogKeywordIndex
>>>implementer (ICatalogFactory)
... Klasse MySoupCatalogFactory (Objekt):
...
... Def __call __ (self, context = None):
... Kataloge = Katalog ()
... Userindexer = NodeAttributeIndexer ('user')
... Kataloge [u'user '] = CatalogFieldIndex (userindexer)
... Textindexer = NodeAttributeIndexer ("Text")
... Kataloge [u'text '] = CatalogTextIndex (Textindexer)
... Keywordindexer = NodeAttributeIndexer ("Keywords")
... Kataloge [u'keywords '] = CatalogKeywordIndex (keywordindexer)
... Rückkehr Katalog
>>> ProvideUtility (MySoupCatalogFactory () name = "mysoup")
Der Katalog Fabrik ist Suppen nur intern verwendet, aber kann man wollen, um zu überprüfen, ob es funktioniert:
>>> Catalogfactory = getUtility (ICatalogFactory, name = 'mysoup')
>>> Catalogfactory

>>> Katalog = catalogfactory ()
>>> Sortiert (catalog.items ())
[(U'keywords ', ),
(U'text ', ),
(U'user ', )]
Hinzufügen von Datensätzen
Wie oben erwähnt souper.soup.Record ist die einzige Art von Daten zur Suppe zugegeben. Ein Datensatz hat Attribute, die die Daten:
>>> Von souper.soup Import get_soup
>>> Von souper.soup Importakte
>>> Suppe = get_soup ('mysoup ", Kontext)
>>> Rekord = Record ()
>>> Record.attrs ['user'] = "Benutzer1"
>>> Record.attrs ['text'] = u'foo bar baz '
>>> Record.attrs ['Stichworte'] = [U'1 ', U'2', u '& uuml;']
>>> Record_id = soup.add (Aufnahme)
Ein Datensatz kann enthält andere Aufzeichnungen. Aber zu indizieren sie einen einen benutzerdefinierten Indexer bräuchten, so usally conatined Aufzeichnungen wertvoll für spätere Anzeige und nicht für die Suche:
>>> Rekord ['Unterdatensatz'] = Record ()
>>> Rekord ['homeaddress']. Attrs ['zip'] = '6020'
>>> Rekord ['homeaddress']. Attrs ['Stadt'] = 'Innsbruck'
>>> Rekord ['homeaddress']. Attrs ['Land'] = 'Österreich'
Zugangsdaten
Auch ohne Rückfrage ein Datensatz von ID geholt werden:
>>> Von souper.soup Import get_soup
>>> Suppe = get_soup ('mysoup ", Kontext)
>>> Rekord = soup.get (record_id)
Alle Einträge können über die den Behälter BTree zugegriffen werden:
>>> Soup.data.keys () [0] == record_id
Wahr
Abfragedaten
Wie man ein repoze Katalog abzufragen ist gut dokumentiert. Sortierung funktioniert auch die gleiche. Anfragen werden an Suppen Abfrage-Methode übergeben (die dann verwendet repoze Katalog). Sie gibt einen Generator:
>>> Von repoze.catalog.query Import Gl
>>> [R für r in soup.query (Gleichung ('user', 'user1'))]
[]
>>> [R für r in soup.query (Gleichung ('user', 'nonexists'))]
[]
Um auch erhalten die Größe der Ergebnismenge übergeben Sie einen with_size = True auf die Abfrage. Das erste Element von dem Generator zurück ist die Größe:
>>> [R für r in soup.query (Gleichung ('user', 'user1'), with_size-True)]
[1, ]
Zum Umgang mit großen Ergebnis zu optimieren setzt man nicht auf den Datensatz, sondern einen Generator wieder leichte Gegenstände zu holen. Die Datensätze werden auf Abruf abgeholt:
>>> Faul = [l für l in soup.lazy (Gleichung ('name', 'name'))]
>>> Faul
[,
>>> Faul [0] ()

Hier ist die Größe als ersten Wert der geneartor zu übergeben, wenn with_size = True übergeben wird.
Löschen eines Datensatzes
Um einen Eintrag aus der Suppe python del ist wie ein verwendet würde auf jeder dict tun zu entfernen:
>>> Del Suppe [record_id]
Reindex
Nachdem eine Datensätzen Daten geändert braucht es eine reindex:
>>> Record.attrs ['user'] = "Benutzer1"
>>> Soup.reindex (records = [record])
Manchmal kann man wollen, um alle Daten zu indizieren. Dann Reindex hat ohne Parameter aufgerufen werden. Es kann eine Weile dauern:
>>> Soup.reindex ()
Rebuild Katalog
Trattorias, nachdem eine Änderung der Katalog Fabrik hergestellt wurde - wurde also einige Index aufgenommen - eine Neuerstellung des Katalogs ich brauchte. Er ersetzt den aktuellen Katalog durch eine neue durch den Katalog Fabrik und indiziert alle Daten. Es kann Zeit in Anspruch nehmen:
>>> Soup.rebuild ()
Reset (oder deaktivieren) Sie die Suppe
Um alle Daten aus der Suppe und leer zu entfernen und den Katalog Anruf klar wieder aufzubauen. Achtung: Alle Daten gehen verloren!
>>> Soup.clear ()
Installationshinweise
Um souper node.ext.zodb verwenden benötigt wird. Da diese Beta veröffentlicht wurde gab es keine Mitteilung (wird in Kürze erfolgen). Bitte überprüfen Sie pypi wenn es da ist, ansonsten bitte holen node.ext.zodb von Github

Was ist neu in dieser Pressemitteilung:.

  • PEP-8. [Rnix, 2012.10.16]
  • Python 2.7-Unterstützung. [Rnix, 2012.10.16]
  • Fix-Dokumentation.

Anforderungen :

  • Python

Andere Software von Entwickler BlueDynamics Alliance

vdexcsv
vdexcsv

11 May 15

Kommentare zu Souper

Kommentare nicht gefunden
Kommentar hinzufügen
Schalten Sie auf die Bilder!