Souper

Скриншот программы:
Souper
Детали программы:
Версия: 1.0.1
Дата загрузки: 20 Feb 15
Разработчик: BlueDynamics Alliance
Тип распространения: Бесплатная
Популярность: 4

Rating: nan/5 (Total Votes: 0)

Souper является инструментом Python для программистов. Он предлагает интегрированную память, привязанную вместе с индексами в каталоге. Записи в памяти являются общими. Это можно хранить любые данные на записи, если он является стойким pickable в ZODB.
Souper могут быть использованы использоваться в любом питона приложения с помощью ZODB, например пирамиды или Plone.
Использование Souper
Предоставление Locator
Супы посмотрел путем адаптации souper.interfaces.IStorageLocator в некотором контексте. Souper не предоставляет никаких локатор умолчанию. Так первая должна быть предоставлена. Давайте предположим, контекст некоторых стойких экземпляр ДИКТ, как:
>>> От импорта zope.interface исполнителя
>>> От импорта zope.interface интерфейс
>>> От импорта provideAdapter zope.component
>>> От импорта IStorageLocator souper.interfaces
>>> От souper.soup SoupData импортных
>>>implementer (IStorageLocator)
... Класс StorageLocator (объект):
...
... Def __init __ (сам, контекст):
... Self.context = контекст
...
... Def хранения (я, soup_name):
... Если soup_name не self.context:
... Self.context [soup_name] = SoupData ()
... Возврат self.context [soup_name]
>>> ProvideAdapter (StorageLocator, адаптируется = [Интерфейс])
Итак, мы имеем локатор создание супы от имени на лету. Теперь его легко получить суп по имени:
>>> От импорта souper.soup get_soup
>>> Суп = get_soup ('mysoup ", контекст)
>>> Суп

Предоставление Каталог завод
В зависимости от ваших потребностей в каталог и ее индексов может отличаться от потребительной случае прецедентов. Каталог завод отвечает создать каталог для супа. Завод является назвали утилита реализации souper.interfaces.ICatalogFactory. Название утилите к таким же, как суп есть.
Вот repoze.catalog используется, и пусть индексы доступ к данным на записях по клавишу NodeAttributeIndexer используется. Для особых случаев можно написать свои собственные шагового, но по умолчанию в порядке большую часть времени:
>>> От импорта ICatalogFactory souper.interfaces
>>> От импорта souper.soup NodeAttributeIndexer
>>> От импорта provideUtility zope.component
>>> От импорта каталога repoze.catalog.catalog
>>> От импорта repoze.catalog.indexes.field CatalogFieldIndex
>>> От импорта CatalogTextIndex repoze.catalog.indexes.text
>>> От импорта CatalogKeywordIndex repoze.catalog.indexes.keyword
>>>implementer (ICatalogFactory)
... Класс MySoupCatalogFactory (объект):
...
... Def __call __ (сам, контекст = нет):
... Каталог = Каталог ()
... Userindexer = NodeAttributeIndexer ("пользователь")
... Каталог [u'user '] = CatalogFieldIndex (userindexer)
... Textindexer = NodeAttributeIndexer ('текст')
... Каталог [u'text '] = CatalogTextIndex (textindexer)
... Keywordindexer = NodeAttributeIndexer ("ключевые слова")
... Каталог [u'keywords '] = CatalogKeywordIndex (keywordindexer)
... Вернуться к каталогу
>>> ProvideUtility (MySoupCatalogFactory (), имя = "mysoup")
Каталог завод используется суп-только для внутреннего, но можно хотеть проверить, если он работает нормально:
>>> Catalogfactory = getUtility (ICatalogFactory, имя = 'mysoup')
>>> Catalogfactory

>>> Каталог = catalogfactory ()
>>> Отсортировано (catalog.items ())
[(u'keywords ', <объект repoze.catalog.indexes.keyword.CatalogKeywordIndex на 0x ...>),
(u'text ", <объект repoze.catalog.indexes.text.CatalogTextIndex на 0x ...>),
(u'user ", )]
Добавление записей
Как упоминалось выше, souper.soup.Record является одним и единственным видом данных, добавленных в суп. Запись имеет атрибуты, содержащие данные:
>>> От импорта souper.soup get_soup
>>> От импорта souper.soup запись
>>> Суп = get_soup ('mysoup ", контекст)
>>> Запись = запись ()
>>> Record.attrs ['пользователь'] = 'user1'
>>> Record.attrs ['текст'] = u'foo бар Базь
>>> Record.attrs ['ключевые слова'] = [u'1 ", u'2 ', и' & uuml; ']
>>> Record_id = soup.add (запись)
Запись может содержит другие записи. Но индексировать их нужно было бы пользовательский индексатор, так Usally conatined записи ценны для последующего отображения, не для поиска:
>>> Запись ['subrecord'] = Запись ()
>>> [Запись "homeaddress ']. ATTRS [' молния '] =' 6020 '
>>> [Запись "homeaddress ']. ATTRS [' город '] =' Инсбрук '
>>> [Запись "homeaddress ']. ATTRS [' страна '] =' Австрия '
Доступ к данным
Даже без запроса запись может быть извлечена с помощью ID:
>>> От импорта souper.soup get_soup
>>> Суп = get_soup ('mysoup ", контекст)
>>> Запись = soup.get (record_id)
Все записи могут быть доступны с помощью использования контейнера BTree:
>>> Soup.data.keys () [0] == record_id
Правда
Запрос данных
Как запросить каталог repoze документально хорошо. Сортировка работает так же, тоже. Запросы передаются супов методом запроса (который использует то repoze каталог). Она возвращает генератор:
>>> От импорта repoze.catalog.query уравнения
>>> [При г в soup.query (уравнение ("пользователь", "user1"))]
[<Объект Рекорд "Отсутствует" в ...>]
>>> [При г в soup.query (EQ ('пользователь', '' nonexists))]
[]
Также получить размер результирующего набора пройти with_size = True в запросе. Первый элемент возвращен генератора размер:
>>> [При г в soup.query (уравнение ("пользователь", "user1"), with_size-True)]
[1, <Запись объект "None" в ...>]
Для оптимизации обработки больших наборов не может принести запись, но генератор возвращается легкие предметы весом. Записи принес по вызову:
>>> Ленивый = [л для л в soup.lazy (уравнение ('имя', 'имя'))]
>>> Ленивый
[<Объект souper.soup.LazyRecord на ...>,
>>> Ленивый [0] ()
<Не Запись объект "None" в ...>
Здесь размер передается в качестве первого значения geneartor тоже, если with_size = True передается.
Удалить запись
Чтобы удалить запись из супа питона дель используется как один будет делать на любом Dict:
>>> Дель суп [record_id]
Reindex
После записи данных изменился он нуждается в REINDEX:
>>> Record.attrs ['пользователь'] = 'user1'
>>> Soup.reindex (запись = [запись])
Иногда может потребоваться проиндексировать все данные. Тогда REINDEX должен быть вызван без параметров. Это может занять некоторое время:
>>> Soup.reindex ()
Перестроить каталог
Usally было сделано после того, как изменение каталоге завода - то есть некоторые индекс был добавлен - это восстановить каталога я нужен. Он заменяет текущий каталог с новой, созданной каталоге фабрики и индексирование всех данных. Это может занять некоторое время:
>>> Soup.rebuild ()
Reset (или снимите) суп
Чтобы удалить все данные из супа и пуста, и восстановить каталог вызов ясно. Внимание: все данные будут потеряны!
>>> Soup.clear ()
Замечания по установке
Для того чтобы использовать Souper node.ext.zodb необходим. Как это бета была выпущена не было отбоя (будет сделано в ближайшее время). Пожалуйста, проверьте PyPi, если это там, в противном случае пожалуйста выборки node.ext.zodb из GitHub

Что нового В этом выпуске:.

  • PEP-8. [rnix, 2012-10-16]
  • Python 2.7 Поддержка. [rnix, 2012-10-16]
  • Исправлена ​​документация.

Требования

  • Python

Другие программы разработчика BlueDynamics Alliance

vdexcsv
vdexcsv

11 May 15

cone.ugm
cone.ugm

20 Feb 15

Комментарии к Souper

Комментарии не найдены
добавить комментарий
Включите картинки!