Souper

Programinė įranga Screenshot:
Souper
Programinė detalės:
Versija: 1.0.1
Įkėlimo datą: 20 Feb 15
Licencija: Nemokamai
Populiarumas: 4

Rating: nan/5 (Total Votes: 0)

Souper yra Python įrankis programuotojams. Jis siūlo integruotą saugojimo surišami su indeksų katalogą. Šio saugojimo įrašai bendrinis. Tai yra įmanoma saugoti bet kokius duomenis dėl įrašo, jei ji yra patvari pickable in ZODB.
Souper galima naudoti bet python taikymo naudojant ZODB, pavyzdžiui, piramidės ar Plone.
Naudojant Souper
Teikti Katalogas
Sriubos yra pažvelgė pritaikant souper.interfaces.IStorageLocator tam kontekste. Souper nepateikia jokių numatytąjį paieškos funkcija. Taigi pirmasis turi būti teikiamos. Tarkime, kontekstas yra kai nuolatinis dict-kaip pavyzdžiui:
>>> Iš zope.interface importo vykdytojo
>>> Iš zope.interface importo sąsaja
>>> Iš zope.component importo provideAdapter
>>> Iš souper.interfaces importuoti IStorageLocator
>>> Iš souper.soup importo SoupData
>>>implementer (IStorageLocator)
... Klasės StorageLocator (objektas):
...
... Def __init __ (self, kontekstas):
... Self.context = kontekstas
...
... Def saugojimas (savarankiškai, soup_name):
... Jei soup_name ne self.context:
... Self.context [soup_name] = SoupData ()
... Grįžti self.context [soup_name]
>>> ProvideAdapter (StorageLocator, prisitaiko = [Interface])
Taigi, mes turime Katalogas kuriant sriubos pagal pavadinimą skristi. Dabar jos lengvai gauti sriuba pagal vardą:
>>> Iš souper.soup importo get_soup
>>> Sriuba = get_soup (mysoup ", kontekstas)
>>> Sriuba

Teikti Katalogas Factory
Priklausomai nuo Jūsų poreikių katalogas ir jo rodiklių gali skirtis nuo use-case naudoti-bylą. Katalogas gamykla yra atsakingas sukurti sriuba katalogą. Gamykla yra pavadintas įrankis įgyvendinti souper.interfaces.ICatalogFactory. Iš naudingumo pavadinimas turi tas pats kaip sriuba turėti.
Čia repoze.catalog naudojamas ir tegul indeksai pasiekti duomenis apie pagal raktinius įrašų NodeAttributeIndexer naudojamas. Dėl specialių atvejų galima parašyti savo užsakymą indeksuotojų, bet nutylėjimą yra gerai didžiąją laiko:
>>> Iš souper.interfaces importuoti ICatalogFactory
>>> Iš souper.soup importo NodeAttributeIndexer
>>> Iš zope.component importo provideUtility
>>> Iš repoze.catalog.catalog importo katalogas
>>> Iš repoze.catalog.indexes.field importo CatalogFieldIndex
>>> Iš repoze.catalog.indexes.text importo CatalogTextIndex
>>> Iš repoze.catalog.indexes.keyword importo CatalogKeywordIndex
>>>implementer (ICatalogFactory)
... Klasės MySoupCatalogFactory (objektas):
...
... Def __call __ (self, kontekstas = Nėra)
... Katalogas = Katalogas ()
... Userindexer = NodeAttributeIndexer ("naudotojas")
... Katalogas [u'user '] = CatalogFieldIndex (userindexer)
... Textindexer = NodeAttributeIndexer ("tekstas")
... Katalogas [u'text '] = CatalogTextIndex (textindexer)
... keywordindexer = NodeAttributeIndexer ("žodžiai")
... Katalogas [u'keywords '] = CatalogKeywordIndex (keywordindexer)
... Grįžti katalogas
>>> ProvideUtility (MySoupCatalogFactory (), name = "mysoup)
Katalogas gamykloje naudojama tik sriuba vidaus, bet vienas gali norėti patikrinti, ar ji veikia puikiai:
>>> Catalogfactory = getUtility (ICatalogFactory, vardas = 'mysoup)
>>> Catalogfactory

>>> Katalogas = catalogfactory ()
>>> rūšiuojami (catalog.items ())
[(u'keywords ", ),
(U'text "),
(U'user ")]
Įrašyta įrašus
Kaip minėta, souper.soup.Record yra vienas ir tik rūšies duomenis pridėti prie sriubos. Įrašas turi atributus, kuriuose yra duomenys:
>>> Iš souper.soup importo get_soup
>>> Iš souper.soup importo įrašo
>>> Sriuba = get_soup (mysoup ", kontekstas)
>>> Įrašas = Įrašų ()
>>> record.attrs ['vartotojas'] = 'user1 "
>>> record.attrs ['tekstas'] = u'foo baras bazių "
>>> record.attrs ['keywords'] = [u'1 ", u'2", u "ü"]
>>> Record_id = soup.add (įrašas)
Įrašas gali yra kitų įrašų. Bet jiems indeksą viena reikės pasirinktinį Indexer, todėl vaisto paprastai bus conatined įrašai vertingas vėliau ekrane, o ne ieškoti:
>>> Įrašas ['subrecord'] = Įrašų ()
>>> įrašų ["homeaddress ']. attrs [' Zip '] =' 6020 '
>>> įrašų ["homeaddress ']. attrs [' miestas '] =' Insbrukas"
>>> Įrašų ["homeaddress ']. Attrs [" šalis "] =" Austrija "
Priėjimo duomenys
Net be jokios užklausos įrašas gali būti nerealu pagal ID:
>>> Iš souper.soup importo get_soup
>>> Sriuba = get_soup (mysoup ", kontekstas)
>>> Įrašas = soup.get (record_id)
Visi įrašai gali būti atvertas naudojant konteinerį naudojantis BTree:
>>> soup.data.keys () [0] == record_id
Tiesa
Užklausa duomenys
Kaip užklausti repoze katalogas dokumentais gerai. Rūšiavimas veikia pats per daug. Užklausos yra perduodami sriubos užklausos metodu (kuris naudoja tada repoze katalogas). Ji grąžina generatorių:
>>> Iš repoze.catalog.query importo Eq
>>> [R R soup.query (EQ ("naudotojas", "user1))]
[<Įrašų objektas "Nėra" ne ...>]
>>> [R R soup.query (EQ ("vartotojas", "nonexists"))]
[]
Be to, siekiant gauti iš rezultatų rinkinį dydį praeiti with_size = true į užklausą. Pirmasis elementas grąžina generatorius dydis:
>>> [R R soup.query (EQ ("naudotojas", "user1"), with_size-Tiesa)]
[1, <Įrašų objektas "Nieko" ne ...>]
Siekiant optimizuoti tvarkymą didelis rezultatas nustatomas vienas negali atnešti rekordą, bet generatorius grįžta lengvas objektus. Įrašai paėmė budi:
>>> Tingus = [l l soup.lazy (EQ ("pavadinimas", "pavadinimas"))]
>>> Tingus
[
>>> Tingus [0] ()
<Įrašų objektas "Nėra" ne ...>
Čia dydis yra perduodamas kaip pirmą vertės geneartor per daug, jei with_size = true praėjo.
Ištrinti įrašą
Norėdami pašalinti įrašą iš sriuba python del naudojamas kaip vienas būtų padaryti bet dict:
>>> Del sriuba [record_id]
Indeksuojami
Po registrų duomenys pasikeitė ji turi indeksuojami:
>>> record.attrs ['vartotojas'] = 'user1 "
>>> Soup.reindex (įrašų = [įrašyti])
Kartais vienas gali norėti indeksuojami visus duomenis. Tada indeksuojami turi būti vadinamas be parametrų. Tai gali užtrukti:
>>> Soup.reindex ()
Atstatyti katalogą
Vaisto paprastai bus po buvo Katalogo gamykloje kaita - ty kai puslapis buvo įtraukta - atstatyti iš katalogo man reikia. Jis pakeičia esamą katalogą su nauju sukurto katalogo gamykloje ir reindexes visus duomenis. Tai gali užtrukti, nes:
>>> Soup.rebuild ()
Atstatyti (arba išvalykite) sriuba
Norėdami pašalinti visus duomenis iš sriubos ir tuščia, ir atkurti kataloge skambutį aiškiai. Dėmesio: visi duomenys bus prarasti!
>>> Soup.clear ()
Montavimo Pastabos
Norint naudotis Souper node.ext.zodb reikia. Kadangi šis beta buvo išleistas nebuvo spaudai (bus padaryta greitai). Prašome patikrinti pypi jei ji yra, kitaip prašome atnešti node.ext.zodb iš GitHub

Kas naujo , šioje laidoje:.

  • PEP-8. [Rnix, 2012/10/16]
  • Python 2.7 palaikymas. [Rnix, 2012/10/16]
  • Nustatyti dokumentai.

Reikalavimai :

  • Python

Kita programinė įranga kūrėjas BlueDynamics Alliance

vdexcsv
vdexcsv

11 May 15

cone.ugm
cone.ugm

20 Feb 15

Komentarai Souper

Komentarai nerastas
Pridėti komentarą
Pasukite ant paveikslėlio!