Souper

Software captura de pantalla:
Souper
Detalles de software:
Versión: 1.0.1
Fecha de carga: 20 Feb 15
Licencia: Libre
Popularidad: 4

Rating: nan/5 (Total Votes: 0)

Souper es una herramienta de Python para programadores. Ofrece un almacenamiento integrado atadas con índices en un catálogo. Los registros en el almacenamiento son genéricos. Es posible almacenar más datos en un disco si es pickable persistente en ZODB.
Souper se puede utilizar utilizado en cualquier aplicación Python usando la ZODB, tales como pirámide o Plone.
Uso Souper
Proporcionar un localizador
Las sopas se miraron adaptando souper.interfaces.IStorageLocator a algún contexto. Souper no proporciona ninguna localizador predeterminado. Así que necesitan primero que se preste. Asumamos contexto es alguna instancia-dict como persistente:
>>> From zope.interface implementador de importación
>>> De interfaz de importación zope.interface
>>> From provideAdapter importación zope.component
>>> From souper.interfaces importan IStorageLocator
>>> From SoupData importación souper.soup
>>>implementer (IStorageLocator)
... Clase StorageLocator (objeto):
...
... Def __init __ (self, contexto):
... Self.context = contexto
...
... Def almacenamiento (self, soup_name):
... Si soup_name no en self.context:
... Self.context [soup_name] = SoupData ()
... Volver self.context [soup_name]
>>> ProvideAdapter (StorageLocator, se adapta = [Interfaz])
Así que tenemos localizador crear sopas de nombre sobre la marcha. Ahora es fácil obtener una sopa por nombre:
>>> From souper.soup get_soup importación
>>> Sopa = get_soup ('mysoup', contexto)
>>> Sopa

Proporcionar una fábrica Catálogo
Dependiendo de sus necesidades el catálogo y sus índices puede verse diferente del caso de uso a casos de uso. La fábrica catálogo es responsable de crear un catálogo para una sopa. La fábrica es una utilidad llamada implementar souper.interfaces.ICatalogFactory. El nombre de la utilidad tiene al igual que la sopa tienen.
Aquí repoze.catalog se utiliza y dejar que los índices de acceso a los datos en los registros por clave se utiliza el NodeAttributeIndexer. Para casos especiales se puede escribir sus indexadores personalizados, pero el defecto es muy bien la mayor parte del tiempo:
>>> From souper.interfaces importan ICatalogFactory
>>> From souper.soup NodeAttributeIndexer importación
>>> From provideUtility importación zope.component
>>> Catalog importación repoze.catalog.catalog
>>> From repoze.catalog.indexes.field CatalogFieldIndex importación
>>> From CatalogTextIndex importación repoze.catalog.indexes.text
>>> From CatalogKeywordIndex importación repoze.catalog.indexes.keyword
>>>implementer (ICatalogFactory)
... Clase MySoupCatalogFactory (objeto):
...
... Def __call __ (self, context = None):
... Catálogo Catálogo = ()
... Userindexer = NodeAttributeIndexer ("usuario")
... Catálogo [u'user '] = CatalogFieldIndex (userindexer)
... TextIndexer = NodeAttributeIndexer ("texto")
... Catálogo [u'text '] = CatalogTextIndex (TextIndexer)
... keywordindexer = NodeAttributeIndexer ('palabras clave')
... Catálogo de [u'keywords '] = CatalogKeywordIndex (keywordindexer)
... Catálogo de retorno
>>> ProvideUtility (MySoupCatalogFactory (), name = "mysoup")
La fábrica de catálogo se utiliza sopa interno pero puede que desee comprobar si funciona bien:
>>> Catalogfactory = getUtility (ICatalogFactory, name = 'mysoup')
>>> Catalogfactory

>>> Catálogo = catalogfactory ()
>>> ordenados (catalog.items ())
[(u'keywords ', ),
(U'text ', ),
(U'user ', )]
Añadir registros
Como se mencionó anteriormente el souper.soup.Record es el único tipo de datos añadidos a la sopa. Un registro tiene atributos que contienen los datos:
>>> From souper.soup get_soup importación
>>> From souper.soup Record importación
>>> Sopa = get_soup ('mysoup', contexto)
>>> Registro = Grabar ()
>>> record.attrs ['usuario'] = 'usuario1'
>>> record.attrs ["texto"] = u'foo bar baz '
>>> record.attrs ['palabras clave'] = [u'1 ', u'2', u '& uuml;']
>>> Record_id = soup.add (registro)
Un registro puede contener otros registros. Pero para indexarlos se necesitaría un indexador de costumbre, por lo que los registros usally conatined son valiosos para la exhibición más tarde, no para la búsqueda:
>>> Registro ['subregistro'] = Grabar ()
>>> récord attrs ['homeaddress']. ['zip'] = '6020'
>>> récord attrs ['homeaddress']. ['ciudad'] = 'Innsbruck'
>>> Récord attrs ['homeaddress']. ['País'] = 'Austria'
Datos de acceso
Incluso sin ninguna consulta un registro puede ser traída por id:
>>> From souper.soup get_soup importación
>>> Sopa = get_soup ('mysoup', contexto)
>>> Registro = soup.get (record_id)
Todos los registros se puede acceder mediante la utilización de la árbolB contenedor:
>>> soup.data.keys () [0] == record_id
Verdadero
Datos de la consulta
Cómo consultar un catálogo repoze se documenta bien. Clasificación funciona de la misma también. Las consultas se pasan a las sopas método de consulta (que utiliza entonces catálogo repoze). Devuelve un generador:
>>> From repoze.catalog.query ecuación de importaciones
>>> [R para r en soup.query (Ec ('usuario', 'usuario1'))]
[]
>>> [R para r en soup.query (Ec ('usuario', 'nonexists'))]
[]
Para conseguir también el tamaño del conjunto de resultados aprobar una with_size = True a la consulta. El primer elemento devuelto por el generador es el tamaño:
>>> [R para r en soup.query (Ec ('usuario', 'usuario1'), with_size-True)]
[1, ]
Para optimizar el manejo de grandes conjuntos de resultados no se pueden a buscar el registro, pero un generador de devolver los objetos de peso ligero. Los registros se obtienen de guardia:
>>> Lazy = [l para l en soup.lazy (Ec ('nombre', 'nombre'))]
>>> Perezoso
[,
>>> Perezoso [0] ()

Aquí el tamaño se pasa como primer valor de la geneartor también si with_size = true se pasa.
Eliminar un registro
Para eliminar un registro de la pitón sopa del se utiliza como uno lo haría en cualquier dict:
>>> Del sopa [record_id]
Reindex
Después de un dato registros cambió necesita una re-indexación:
>>> record.attrs ['usuario'] = 'usuario1'
>>> Soup.reindex (registros = [ficha])
A veces uno puede querer indexar todos los datos. Entonces REINDEX ha de ser llamado sin parámetros. Se puede tomar un tiempo:
>>> Soup.reindex ()
Reconstruir catálogo
Usally después se hizo un cambio de fábrica de catálogo - se añadió decir algún índice - una reconstrucción del catálogo que necesitaba. Sustituye el catálogo actual por uno nuevo creado por la fábrica de catálogo y indexar todos los datos. Puede tomar tiempo:
>>> Soup.rebuild ()
Reset (o borrar) la sopa
Para eliminar todos los datos de la sopa y vacía y reconstruir la llamada catálogo claro. Atención: se pierden todos los datos!
>>> Soup.clear ()
Notas Instalación
Para utilizar node.ext.zodb souper que se necesita. Como esta versión beta fue lanzada no hubo liberación (se hará en breve). Por favor, consulte PyPI si está allí, de lo contrario por favor traiga node.ext.zodb desde github

¿Qué hay de nuevo en esta versión:.

  • PEP-8. [Rnix, 16/10/2012]
  • Python 2.7 Apoyo. [Rnix, 16/10/2012]
  • documentación Fix.

Requisitos :

  • Python

Otro software de desarrollador BlueDynamics Alliance

vdexcsv
vdexcsv

11 May 15

cone.ugm
cone.ugm

20 Feb 15

Comentarios a la Souper

Comentarios que no se encuentran
Añadir comentario
A su vez en las imágenes!