Souper

Logiciel capture d'écran:
Souper
Détails logiciels:
Version: 1.0.1
Date de transfert: 20 Feb 15
Développeur: BlueDynamics Alliance
Licence: Gratuit
Popularité: 4

Rating: nan/5 (Total Votes: 0)

Souper est un outil de Python pour les programmeurs. Il dispose d'une mémoire intégrée attachés ensemble avec des index dans un catalogue. Les dossiers dans le stockage sont génériques. Il est possible de stocker des données sur un disque si elle est pickable persistant dans ZODB.
Souper peut être utilisé utilisé dans ne importe quelle application python utilisant la ZODB, tels que Pyramid ou Plone.
Utilisation Souper
Fournir un Locator
Soupes sont recherchés en adaptant souper.interfaces.IStorageLocator à un certain contexte. Souper ne fournit aucune localisation par défaut. Donc première doivent être fournis. Supposons contexte est certaine instance de dict-comme persistante:
>>> From zope.interface importation exécutant
>>> Partir de l'interface d'importation de zope.interface
>>> From zope.component provideAdapter d'importation
>>> From souper.interfaces importer IStorageLocator
>>> From SoupData d'importation souper.soup
>>>implementer (IStorageLocator)
... StorageLocator de classe (objet):
...
... Def __init __ (self, contexte):
... Self.context = contexte
...
... Def stockage (auto, soup_name):
... Si soup_name pas dans self.context:
... Self.context [soup_name] = SoupData ()
... Retour self.context [soup_name]
>>> ProvideAdapter (StorageLocator, adapte = [Interface])
Nous avons donc localisateur création soupes par nom à la volée. Maintenant son facile d'obtenir une soupe par son nom:
>>> From souper.soup importation get_soup
>>> Soupe = get_soup ('mysoup', contexte)
>>> Soupe

Fournir un catalogue usine
Selon vos besoins, le catalogue et ses index peut être différent de cas d'utilisation à utiliser cas. L'usine de catalogue est responsable de créer un catalogue pour une soupe. L'usine est un utilitaire nommé la mise en œuvre souper.interfaces.ICatalogFactory. Le nom de l'utilitaire a la même que la soupe ont.
Voici repoze.catalog est utilisé et de laisser les indices accéder aux données sur les dossiers par la touche NodeAttributeIndexer est utilisé. Pour les cas spéciaux, on peut écrire ses indexeurs personnalisés, mais celui par défaut est très bien la plupart du temps:
>>> From souper.interfaces importer ICatalogFactory
>>> From souper.soup importation NodeAttributeIndexer
>>> From zope.component provideUtility d'importation
>>> From repoze.catalog.catalog Catalogue d'importation
>>> From repoze.catalog.indexes.field importation CatalogFieldIndex
>>> From CatalogTextIndex d'importation repoze.catalog.indexes.text
>>> From CatalogKeywordIndex d'importation repoze.catalog.indexes.keyword
>>>implementer (ICatalogFactory)
... MySoupCatalogFactory de classe (objet):
...
... Def __call __ (self, context = Aucun):
... Le catalogue = Catalogue ()
... Userindexer = NodeAttributeIndexer ('user')
... Le catalogue [u'user '] = CatalogFieldIndex (userindexer)
... TextIndexer = NodeAttributeIndexer ('text')
... Le catalogue [u'text '] = CatalogTextIndex (TextIndexer)
... keywordindexer = NodeAttributeIndexer («mots-clés»)
... Catalogue [u'keywords '] = CatalogKeywordIndex (keywordindexer)
... Le catalogue de retour
>>> ProvideUtility (MySoupCatalogFactory (), name = "mysoup")
L'usine de catalogue est utilisé soupe interne mais on peut vouloir vérifier si elle fonctionne bien:
>>> Catalogfactory = getUtility (ICatalogFactory, name = 'mysoup')
>>> Catalogfactory

>>> Catalogue = catalogfactory ()
>>> triés (catalog.items ())
[(u'keywords », ),
(U'text ', ),
(U'user ', )]
Ajout d'enregistrements
Comme mentionné ci-dessus de la souper.soup.Record est le seul et unique type de données ajoutées à la soupe. Un dossier a des attributs contenant les données:
>>> From souper.soup importation get_soup
>>> À partir de la fiche d'importation de souper.soup
>>> Soupe = get_soup ('mysoup', contexte)
>>> Enregistrement = Enregistrer ()
>>> record.attrs ['user'] = 'user1'
>>> record.attrs ['texte'] = u'foo bar baz '
>>> record.attrs ['mots clés'] = [U'1 ', U'2', u '& uuml']
>>> Record_id = soup.add (enregistrement)
Un dossier peut contient d'autres dossiers. Mais pour les indexer on aurait besoin d'un indexeur de coutume, les dossiers afin usally conatined sont précieux pour l'affichage plus tard, pas pour la recherche:
>>> Enregistrement ['sous-enregistrement'] = Enregistrer ()
>>> RECORD ['homeAddress']. attrs ['zip'] = '6020'
>>> RECORD ['homeAddress']. attrs ['ville'] = 'Innsbruck »
>>> RECORD ['homeAddress']. Attrs ['pays'] = 'Autriche'
Accès aux données
Même sans requête un dossier peut être récupéré par ID:
>>> From souper.soup importation get_soup
>>> Soupe = get_soup ('mysoup', contexte)
>>> Enregistrement = soup.get (record_id)
Tous les documents peuvent être accessibles à l'aide en utilisant la BTree conteneur:
>>> soup.data.keys () [0] == record_id
Vrai
les données de requêtes
Comment interroger un catalogue de repoze est bien documentée. Tri fonctionne de la même trop. Les requêtes sont transmises à soupes méthode de requête (qui utilise ensuite le catalogue de repoze). Elle retourne un générateur:
>>> Partir de l'équation d'importation de repoze.catalog.query
>>> [R pour r dans soup.query (Eq ('user', 'user1'))]
[]
>>> [R pour r dans soup.query (Eq ('user', 'nonexists'))]
[]
Pour obtenir également la taille du jeu de résultats passer un with_size = True à la requête. Le premier élément renvoyé par le générateur est la taille:
>>> [R pour r dans soup.query (Eq ('user', 'user1'), with_size-True)]
[1, ]
Pour optimiser le maniement de grands ensembles de résultats on ne peut aller chercher le record, mais un générateur retour des objets légers. Les enregistrements récupérés sur appel:
>>> Lazy = [l pour l dans soup.lazy (Eq ('nom', 'nom'))]
>>> Paresseux
[,
>>> Paresseux [0] ()

Ici, la taille est passé comme première valeur de la geneartor aussi si with_size = true est passé.
Supprimer un enregistrement
Pour supprimer un enregistrement de la python soupe del est utilisé comme on le ferait sur un dict:
>>> Del soupe [record_id]
Reindex
Après une des données des dossiers changé besoin d'une réindexation:
>>> record.attrs ['user'] = 'user1'
>>> Soup.reindex (dossiers = [fiche])
Parfois, on peut vouloir réindexer toutes les données. Puis réindexer doit être appelée sans paramètres. Il peut prendre un certain temps:
>>> Soup.reindex ()
Reconstruire catalogue
Usally après un changement de catalogue usine a été fait - ce est à dire un indice a été ajouté - une reconstruction du catalogue dont je avais besoin. Il remplace le catalogue actuel par une nouvelle créée par l'usine de catalogue et réindexe toutes les données. Il peut prendre tout:
>>> Soup.rebuild ()
Reset (ou décochez) la soupe
Pour supprimer toutes les données de la soupe et vide et reconstruire le catalogue appel clair. Attention: toutes les données sont perdues!
>>> Soup.clear ()
Remarques Installation
Pour utiliser node.ext.zodb souper est nécessaire. Comme cette version bêta a été libéré il n'y avait pas de presse (qui sera fait bientôt). Se il vous plaît vérifier pypi si elle est là, sinon se il vous plaît chercher node.ext.zodb de github

Ce qui est nouveau dans cette version:.

  • PEP-8. [Rnix, 16.10.2012]
  • Python 2.7 Soutien. [Rnix, 16.10.2012]
  • Documentation Fix.

Exigences :

  • Python

D'autres logiciels de développeur BlueDynamics Alliance

cone.ugm
cone.ugm

20 Feb 15

node.ext.zodb
node.ext.zodb

20 Feb 15

vdexcsv
vdexcsv

11 May 15

Commentaires à Souper

Commentaires non trouvées
Ajouter un commentaire
Tourner sur les images!