Souper

البرمجيات قطة:
Souper
تفاصيل البرنامج:
الإصدار: 1.0.1
تاريخ إيداع: 20 Feb 15
المطور: BlueDynamics Alliance
ترخيص: حرر
شعبية: 4

Rating: nan/5 (Total Votes: 0)

وSouper هو أداة بايثون للمبرمجين. ويقدم تخزين متكاملة مرتبطة ببعضها البعض مع الفهارس في الكتالوج. السجلات في التخزين هي عامة. فمن الممكن لتخزين أي بيانات على سجل إذا كان pickable المستمر في ZODB.
Souper يمكن استخدامها استخدامها في أي تطبيق الثعبان باستخدام ZODB، مثل الهرم أو بلون.
باستخدام Souper
توفير محدد
وبدا حساء تصل عن طريق تكييف souper.interfaces.IStorageLocator لبعض السياق. Souper لا تقدم أي المواقع الافتراضية. حتى أول واحد تحتاج إلى المقدمة. دعونا نفترض السياق هو بعض المثال تشبه ديكت المستمر:
>>> من zope.interface المنفذ الواردات
>>> من واجهة استيراد zope.interface
>>> من zope.component provideAdapter استيراد
>>> من souper.interfaces استيراد IStorageLocator
>>> من SoupData استيراد souper.soup
>>>implementer (IStorageLocator)
... الدرجة StorageLocator (كائن):
...
... مواطنه __init __ (النفس، السياق):
... self.context = السياق
...
... مواطنه التخزين (النفس، 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.soup.Soup في 0X ...>
توفير مصنع كتالوج
اعتمادا على احتياجاتك كتالوج ومؤشراتها قد تبدو مختلفة من استخدام حالة استخدام حدة. المصنع كتالوج مسؤولا عن إنشاء كتالوج لالحساء. المصنع هو أداة اسمه تنفيذ souper.interfaces.ICatalogFactory. اسم الأداة المساعدة له لنفس الحساء ديك.
هنا يستخدم repoze.catalog والسماح للمؤشرات الوصول إلى البيانات على السجلات بواسطة مفتاح يتم استخدام NodeAttributeIndexer. للحالات الخاصة يجوز لأحد أن إرسال مصنفين المخصصة لها، وأما التقصير على ما يرام أكثر من مرة:
>>> من souper.interfaces استيراد ICatalogFactory
>>> من souper.soup NodeAttributeIndexer استيراد
>>> من zope.component provideUtility استيراد
>>> من كتالوج استيراد repoze.catalog.catalog
>>> من repoze.catalog.indexes.field CatalogFieldIndex استيراد
>>> من repoze.catalog.indexes.text CatalogTextIndex استيراد
>>> من repoze.catalog.indexes.keyword CatalogKeywordIndex استيراد
>>>implementer (ICatalogFactory)
... الدرجة MySoupCatalogFactory (كائن):
...
... مواطنه __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
<كائن MySoupCatalogFactory في 0X ...>
>>> كتالوج = 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 (رقم قياسي)
سجل قد يحتوي على سجلات أخرى. ولكن لمؤشر واحد منهم في حاجة الى مفهرس العرف، والسجلات حتى conatined Usally وذات قيمة للعرض في وقت لاحق، وليس من أجل البحث:
>>> سجل ['subrecord'] = سجل ()
>>> سجل ['homeaddress']. attrs ['الرمز'] = '6020'
>>> سجل ['homeaddress']. attrs ['المدينة'] = 'انسبروك "
>>> سجل ['homeaddress']. attrs ['بلد'] = 'النمسا'
الوصول إلى البيانات
حتى من دون أي استفسار سجل يمكن جلب عن الهوية:
>>> من 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 (المعادلة ('المستخدم'، 'nonexists'))]
[]
أيضا للحصول على حجم مجموعة نتيجة تمرير with_size = صحيح إلى الاستعلام. البند الأول إرجاعها بواسطة مولد هو حجم:
>>> [ص ل(ص) في soup.query (المعادلة ('المستخدم'، 'USER1')، with_size-صواب)]
[1، <سجل الكائن 'بلا' في ...>]
لتحسين التعامل مع نتائج كبيرة يحدد واحد قد لا لجلب السجل ولكن مولد عودة الأجسام الخفيفة الوزن. يتم جلب سجلات على المكالمة:
>>> كسول = [لتر للتر في soup.lazy (المعادلة ('اسم'، 'اسم'))]
>>> كسول
[،
>>> كسول [0] ()
<سجل الكائن 'بلا' في ...>
هنا يتم تمرير حجم وقيمة الأولى من geneartor جدا إذا with_size = صحيح تم تمريره.
حذف سجل
لإزالة سجل من الثعبان حساء يستخدم ديل وكأنها واحدة أن تفعل على أي ديكت:
>>> ديل الحساء [record_id]
REINDEX
بعد تغير البيانات سجلات انها تحتاج الى REINDEX:
>>> record.attrs ['المستخدم'] = 'USER1 "
>>> soup.reindex (سجلات = [سجل])
أحيانا يمكن للمرء تريد الفهرسة جميع البيانات. ثم الفهرسة قد ليتم استدعاؤها بدون معلمات. قد يستغرق بعض الوقت:
>>> soup.reindex ()
إعادة بناء كتالوج
Usally وبعد أن تم إجراء تغيير من المصنع كتالوج - وأضيف أي بعض مؤشر - إعادة إنشاء كتالوج ط الحاجة. فإنه يستبدل كتالوج الحالية بأخرى جديدة تم إنشاؤها من قبل المصنع كتالوج وreindexes جميع البيانات. قد يستغرق حين:
>>> soup.rebuild ()
إعادة تعيين (أو مسح) الحساء
لإزالة كافة البيانات من الحساء وفارغة وإعادة بناء الدعوة كتالوج واضحة. انتباه: وفقدت كل البيانات!
>>> soup.clear ()
ملاحظات التثبيت
من أجل استخدام node.ext.zodb souper هو مطلوب. كما تم إصدار هذا بيتا لم يكن هناك إطلاق (وسيتم ذلك قريبا). يرجى مراجعة pypi إذا كان هناك، على خلاف الرجاء جلب node.ext.zodb من جيثب

ما هو الجديد في هذا الإصدار:.

PEP-8. [rnix، 2012/10/16]
بيثون 2.7 الدعم. [rnix، 2012/10/16]
تحديد الوثائق.

المتطلبات:

بيثون

البرامج الأخرى من المطور BlueDynamics Alliance

vdexcsv
vdexcsv

11 May 15

bdajax
bdajax

14 Apr 15

تعليقات ل Souper

لم يتم العثور على التعليقات
إضافة تعليق
بدوره على الصور!