Souper

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

Rating: nan/5 (Total Votes: 0)

Souper е Python инструмент за програмисти. Той предлага интегрирана съхранение връзват заедно с индекси в каталог. Записите в склад, са генерични. Това е възможно да се съхраняват всички данни относно рекорд ако е устойчиво pickable в ZODB.
Souper може да се използва използва за всякакви цели, Python, използвайки ZODB, като Pyramid или Plone.
<Силен> Използване Souper
Осигуряване на Locator
Супи се разгледат чрез адаптиране souper.interfaces.IStorageLocator да някакъв контекст. Souper не предоставя никаква подразбиране локатор. Така че първият трябва да бъде предоставена. Да предположим контекст е известно персистираща Dict-като например:
>>> От zope.interface внос изпълнител
>>> От zope.interface внос Interface
>>> От zope.component внос provideAdapter
>>> От souper.interfaces внасят IStorageLocator
>>> От SoupData внос souper.soup
>>>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, адаптира = [Interface])
Така че ние имаме локатор създаване супи по име в движение. Сега неговото лесно да се получи една супа по име:
>>> От souper.soup внос get_soup
>>> Супа = get_soup ("mysoup", контекст)
>>> Супа

Осигуряване на Catalog Factory
В зависимост от вашите нужди на стоките и нейните индекси може да изглежда различно от използването случай да се използва поотделно. Фабриката за стоките е отговорен за създаване на каталог за супа. Фабриката е кръстен полезност прилагане souper.interfaces.ICatalogFactory. Името на полезност има предвид същото като супата има.
Тук repoze.catalog се използва и да споделите с индексите имат достъп до данните на записите от ключ се използва за NodeAttributeIndexer. За специални случаи човек може да напише своите потребителски индексатори, но един по подразбиране е добре през повечето време:
>>> От souper.interfaces внасят ICatalogFactory
>>> От souper.soup внос NodeAttributeIndexer
>>> От zope.component внос provideUtility
>>> От repoze.catalog.catalog внос Catalog
>>> От repoze.catalog.indexes.field внос CatalogFieldIndex
>>> От repoze.catalog.indexes.text внос CatalogTextIndex
>>> От repoze.catalog.indexes.keyword внос CatalogKeywordIndex
>>>implementer (ICatalogFactory)
... Клас MySoupCatalogFactory (обект):
...
... Def __call __ (самостоятелно, контекст = None):
... На стоките = Catalog ()
... 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 ", ),
(U'text ", ),
(U'user ", )]
Добавяне на записи
Както бе споменато по-горе в souper.soup.Record е една и само вида на данните, добавени към супа. Рекорден има атрибути, съдържащи данни:
>>> От souper.soup внос get_soup
>>> От souper.soup внос Record
>>> Супа = get_soup ("mysoup", контекст)
>>> Рекорд = Record ()
>>> record.attrs ['потребител'] = 'user1 "
>>> record.attrs ["текст"] = u'foo бар Баз "
>>> record.attrs ["Ключови думи"] = [u'1 ", u'2", ф '& uuml;']
>>> Record_id = soup.add (запис)
A запис може да съдържа и други записи. Но за да ги индекс би следвало персонализиран индексиращия, така usally conatined записи са ценни за по-късно езика, не за търсене на:
>>> Запис ['subrecord'] = Record ()
>>> рекордни ['homeaddress "]. attrs [' цип '] =' 6020 '
>>> рекордни ['homeaddress "]. attrs [" град "] =" Innsbruck "
>>> Рекордни ['homeaddress "]. Attrs [" страна "] =" Австрия "
Достъп до данни
Дори и без никаква заявка за запис може да бъде пресилено от ID:
>>> От souper.soup внос get_soup
>>> Супа = get_soup ("mysoup", контекст)
>>> Рекорд = soup.get (record_id)
Всички записи могат да бъдат достъпни чрез използването на BTree контейнер:
>>> soup.data.keys () [0] == record_id
Вярно Е
Данни Query
Как да заявка каталог repoze е документиран добре. Сортирането работи по същия също. Заявки се подават супи метод заявка (която използва след repoze на стоките). Тя връща генератор:
>>> От repoze.catalog.query вносно
>>> [R за R в soup.query (Eq ("потребител", "user1"))]
[]
>>> [R за R в soup.query (Eq ("потребител", "nonexists"))]
[]
За да получите също и размера на резултатния набор премине with_size = True на запитването. Първият елемент е върната от генератора е с размерите:
>>> [R за R в soup.query (Eq ("потребител", "user1"), with_size-True)]
[1, ]
За да се оптимизира работата с голям резултат поставя един може да не донесе записа, но генератор връщане леки предмети. Records са изсмукани от пръстите на повикване:
>>> Мързеливи = [л за л в soup.lazy (Eq ("име", "име"))]
>>> Мързеливи
[,
>>> Мързеливи [0] ()

Тук размерът се предава като първата стойност на geneartor твърде ако with_size = True се предава.
Изтриване на запис
За да премахнете запис от супа питона дел се използва като един ще направи по всяко Dict:
>>> Дел супа [record_id]
Повторно индексиране
След данни записи променила тя се нуждае от повторно индексиране на:
>>> record.attrs ['потребител'] = 'user1 "
>>> Soup.reindex (записи = [запис])
Понякога човек може да искате да повторно индексиране на всички данни. След повторно индексиране е да се нарече, без параметри. Това може да отнеме известно време:
>>> Soup.reindex ()
Rebuild на стоките
Usally след г. е направена промяна на стоките фабрика - е добавен т.е. някои индекс - на възстановяването на каталога имах нужда. Тя замества настоящия каталог с нов, създаден от стоките фабриката и reindexes всички данни. Това може да отнеме, докато:
>>> Soup.rebuild ()
Reset (или изчистване) супата
За да премахнете всички данни от супата и празен и възстановяване на стоките поканата ясно. Внимание: Всички данни се губи!
>>> Soup.clear ()
<Силен> Инсталиране Бележки
За да използвате souper node.ext.zodb е необходимо. По тази бета е освободен не е имало освобождаване (скоро ще бъде направено). Моля, проверете pypi ако тя е там, в противен случай, моля донесе node.ext.zodb от GitHub

Какво ново в тази версия:.

  • PEP-8. [Rnix, 10.16.2012]
  • Python 2.7 Support. [Rnix, 10.16.2012]
  • Fix документация.

<силни> Изисквания :

  • Python

Друг софтуер на разработчика BlueDynamics Alliance

lineage.registry
lineage.registry

14 Apr 15

node.ext.zodb
node.ext.zodb

20 Feb 15

yafowil.plone
yafowil.plone

14 Apr 15

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

Коментари не е намерена
добавите коментар
Включете на изображения!