Souper

Yazılım ekran görüntüsü:
Souper
Yazılım detaylar:
Versiyon: 1.0.1
Qayıt: 20 Feb 15
Geliştirici: BlueDynamics Alliance
Lisans: Ücretsiz
Popülerlik: 4

Rating: nan/5 (Total Votes: 0)

Souper programcılar için bir Python aracıdır. Bir katalogda dizinleri ile birlikte bağlı entegre depolama sunuyor. depolama kayıtları geneldir. O ZODB kalıcı pickable ise bir rekor herhangi bir veri saklamak mümkündür.
Souper örneğin piramit veya Plone olarak ZODB kullanılarak bir piton uygulamasında kullanılan kullanılabilir.
souper kullanma
Bir Bulucu sağlanması
Çorbalar, bazı bağlamda souper.interfaces.IStorageLocator uyarlayarak kadar baktı. Souper herhangi bir varsayılan konumlandırıcıyı sağlamaz. Yani ilk temin edilmesi gerekir. Bağlam, bazı kalıcı dict benzeri örneğidir varsayalım:
>>> Zope.interface ithalat uygulayıcısı gelen
>>> Zope.interface ithalat Arabirimi
>>> Zope.component ithalat provideAdapter gelen
>>> Souper.interfaces IStorageLocator ithal gelen
>>> Souper.soup ithalat SoupData gelen
>>>implementer (IStorageLocator)
... Sınıf StorageLocator (nesne):
...
... Def __init __ (self, bağlam):
... Self.context = bağlam
...
... Def depolama (öz, soup_name):
... Soup_name olmayan self.context ise:
... Self.context [soup_name] = SoupData ()
... Dönüş self.context [soup_name]
>>> ProvideAdapter (StorageLocator, uyum = [Arayüz])
Bu yüzden locator anında adına göre çorba oluştururken var. Adıyla bir çorba almak için şimdi kolay:
>>> Souper.soup ithalat get_soup gelen
>>> Çorba = get_soup ('mysoup', bağlam)
>>> Çorba
<0x ... de souper.soup.Soup object>
Bir Katalog Fabrika sağlanması
Ihtiyaçlarınız katalog ve endeksler bağlı kullanmak-case için kullanım-davadan farklı görünebilir. Katalog fabrikası bir çorba için bir katalog oluşturmak için sorumludur. Fabrika souper.interfaces.ICatalogFactory uygulayan bir adlandırılmış bir yardımcı programdır. çorba aynı olması yarar adı vardır.
İşte repoze.catalog kullanılır ve indeksler NodeAttributeIndexer kullanılan anahtar ile kayıtları üzerinde veri erişim izin. Özel durumlar için biri kendi özel dizinleyiciler yazabilirsiniz, ancak varsayılan bir çoğu zaman ince:
>>> Souper.interfaces ICatalogFactory ithal gelen
>>> Souper.soup ithalat NodeAttributeIndexer gelen
>>> Zope.component ithalat provideUtility gelen
>>> Repoze.catalog.catalog ithalat Kataloğu'ndan
>>> Repoze.catalog.indexes.field ithalat CatalogFieldIndex gelen
>>> Repoze.catalog.indexes.text ithalat CatalogTextIndex gelen
>>> Repoze.catalog.indexes.keyword ithalat CatalogKeywordIndex gelen
>>>implementer (ICatalogFactory)
... Sınıf MySoupCatalogFactory (nesne):
...
... Def __call __ (self, bağlam = Yoktur):
... Katalog = Katalog ()
... Userindexer = NodeAttributeIndexer ('kullanıcı')
... Katalog [u'user '] = CatalogFieldIndex (userindexer)
... Textindexer = NodeAttributeIndexer ('text')
... Katalog [u'text '] = CatalogTextIndex (textindexer)
... Keywordindexer = NodeAttributeIndexer ('anahtar kelimeler')
... Katalog [u'keywords '] = CatalogKeywordIndex (keywordindexer)
... Dönüş kataloğu
>>> ProvideUtility (MySoupCatalogFactory (), name = "mysoup")
Katalog fabrika çorbası-yalnızca dahili kullanılır ama o çalışıyor eğer bir kontrol etmek isteyebilirsiniz:
>>> Catalogfactory = getUtility (ICatalogFactory, isim = 'mysoup')
>>> Catalogfactory
<0x ... de MySoupCatalogFactory object>
>>> Katalog = catalogfactory ()
>>> Sıralanır (catalog.items ())
[(<0x ... En repoze.catalog.indexes.keyword.CatalogKeywordIndex object> u'keywords ',),
(<0x ... En repoze.catalog.indexes.text.CatalogTextIndex object> u'text ',),
(U'user ', )]
Kayıtları ekleme
Souper.soup.Record Yukarıda belirtildiği gibi çorbaya ilave veri ve tek türüdür. Bir rekor verilerini içeren özelliklere sahiptir:
>>> Souper.soup ithalat get_soup gelen
>>> Souper.soup ithalat Tutanak
>>> Çorba = get_soup ('mysoup', bağlam)
>>> Kayıt = Kayıt ()
>>> Record.attrs ['kullanıcı'] = 'birey1'
>>> Record.attrs ['text'] = u'foo bar baz '
>>> Record.attrs ['anahtar kelimeler'] = [u'1 ', u'2' u 've uuml;']
>>> Record_id = soup.add (kayıt)
May bir rekor diğer kayıtları içerir. Ama endeks onları bir nedenle usally conatined kayıtlar değil arama için, daha sonra ekran için değerli bir özel indeksleyiciyi gerekir:
>>> Kayıt ['subrecord'] = Kayıt ()
>>> Kayıt ['homeaddress']. Attrs ['zip'] = '6020'
>>> Kayıt ['homeaddress']. Attrs ['kasaba'] = 'Innsbruck'
>>> Kayıt ['homeaddress']. Attrs ['ülke'] = 'Avusturya'
Access veri
Hatta bir rekor id tarafından alinabilir herhangi bir sorgu olmadan:
>>> Souper.soup ithalat get_soup gelen
>>> Çorba = get_soup ('mysoup', bağlam)
>>> Kayıt = soup.get (record_id)
Tüm kayıtlar konteyner btree kullanan kullanılarak erişilebilir:
>>> Soup.data.keys () [0] == record_id
Gerçek
Sorgu veri
Nasıl bir repoze katalog sorgulamak için iyi belgelenmiştir. Sıralama de aynı şekilde çalışır. Sorgular (daha sonra repoze katalog kullanır) çorbalar sorgu yöntemine geçirilir. Bir jeneratör döndürür:
>>> Repoze.catalog.query ithalat Denk
>>> [Soup.query içinde r r (Denklem ('kullanıcı', 'Kullanıcı1'))]
[]
>>> [Soup.query içinde r r (Denklem ('kullanıcı', 'nonexists'))]
[]
Ayrıca sonuç kümesinin boyutunu almak için sorguya Gerçek bir with_size = geçmek. jeneratör tarafından döndürülen ilk öğe boyutu:
>>> [Soup.query içinde r r (Denklem ('kullanıcı', 'Kullanıcı1'), with_size-Gerçek)]
[1, ]
Büyük sonucun işleme optimize etmek için bir kayıt ama hafif nesneleri dönen bir jeneratör almak için olmayabilir ayarlar. Kayıtlar çağrı üzerine getirilen edilir:
>>> Tembel = [soup.lazy içinde l l (Denklem ('isim', 'ad'))]
>>> Tembel
[,
>>> Yavaş [0] ()
<... Tutanak nesnesi 'Yok'>
With_size geçirilir = True burada boyutu çok geneartor ilk değeri olarak geçirilir.
Bir kaydı silme
Del herhangi bir dict yapacağını gibi kullanılan çorba Python bir kaydı kaldırmak için:
>>> Del çorba [record_id]
Reindex
Bir kayıtlar veri değişti sonra bir ANDA ihtiyacı:
>>> Record.attrs ['kullanıcı'] = 'birey1'
>>> Soup.reindex (kayıtlar = [rekor])
Bazen insan bütün verileri reindex isteyebilirsiniz. Sonra parametreler olmadan çağrılacak olan REINDEX. Bu biraz zaman alabilir:
>>> Soup.reindex ()
Katalog Yeniden
Katalog fabrika bir değişiklik yapıldı usally sonra - yani bazı indeks eklendi - Bir ben gerekli katalog yeniden. Bu katalog fabrika tarafından oluşturulan bir yenisi ile güncel katalogunu değiştirir ve tüm verileri reindexes. Bu biraz zaman alabilir:
>>> Soup.rebuild ()
Çorba Reset (veya temizleyin)
Çorba ve boş gelen tüm verileri kaldırmak ve net katalog aramayı yeniden oluşturmak için. Dikkat: tüm veriler kaybolur!
>>> Soup.clear ()
Kurulum Notları
Souper node.ext.zodb kullanmak için gereklidir. Bu beta hiçbir açıklaması yoktu serbest bırakıldı gibi (yakında yapılacaktır). Orada aksi takdirde github gelen node.ext.zodb getir lütfen, pypi kontrol edin

Bu sürümde Yeni nedir:.

  • PEP-8. [Eklendi, karışım, 2012/10/16]
  • Python 2.7 Destek. [Eklendi, karışım, 2012/10/16]
  • Fix belgeleri.

Gereksinimler :

  • Python

Geliştirici Diğer yazılım BlueDynamics Alliance

lineage.registry
lineage.registry

14 Apr 15

node.ext.zodb
node.ext.zodb

20 Feb 15

bdajax
bdajax

14 Apr 15

vdexcsv
vdexcsv

11 May 15

Yorumlar Souper

Yorum Bulunamadı
Yorum eklemek
Görüntülerde açın!