Souper

ภาพหน้าจอของซอฟแวร์:
Souper
รายละเอียดซอฟแวร์:
รุ่น: 1.0.1
วันที่อัพโหลด: 20 Feb 15
ผู้พัฒนา: BlueDynamics Alliance
การอนุญาต: ฟรี
ความนิยม: 4

Rating: nan/5 (Total Votes: 0)

Souper เป็นเครื่องมือหลามสำหรับโปรแกรมเมอร์ มันมีการจัดเก็บข้อมูลแบบบูรณาการเชื่อมโยงกันกับดัชนีในแคตตาล็อก บันทึกในการจัดเก็บมีทั่วไป มันเป็นไปได้ในการจัดเก็บข้อมูลใด ๆ เกี่ยวกับการบันทึกถ้ามันเป็น pickable ถาวรใน ZODB
Souper สามารถนำมาใช้ในการประยุกต์ใช้หลามใด ๆ ที่ใช้ ZODB เช่นพีระมิดหรือ Plone
การใช้ Souper
ให้ Locator
ซุปจะเงยหน้าขึ้นโดยการปรับ souper.interfaces.IStorageLocator กับบริบทบางอย่าง Souper ไม่ได้ให้ตรวจสอบที่ตั้งค่าเริ่มต้นใด ๆ ดังนั้นคนแรกที่จะต้องมีการให้ สมมติบริบทบางอย่างเช่น Dict เหมือนถาวร:
>>> จากการนำเข้า zope.interface Implementer
>>> จากอินเตอร์เฟซที่นำเข้า zope.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, ปรับ = [การเชื่อมต่อ])
ดังนั้นเราจึงได้สร้างซุปที่ตั้งตามชื่อได้ทันที ตอนนี้มันง่ายที่จะได้รับน้ำซุปตามชื่อ:
>>> จากการนำเข้า souper.soup get_soup
>>> ซุป = get_soup ('mysoup' บริบท)
>>> ซุป

ให้โรงงานแคตตาล็อก
ทั้งนี้ขึ้นอยู่กับความต้องการของคุณแคตตาล็อกและดัชนีอาจมีลักษณะแตกต่างจากการใช้กรณีที่จะใช้กรณี โรงงานแคตตาล็อกเป็นผู้รับผิดชอบในการสร้างรายการสำหรับซุป โรงงานเป็นสาธารณูปโภคที่มีการดำเนินการตั้งชื่อ souper.interfaces.ICatalogFactory ชื่อของยูทิลิตี้ที่มีการเดียวกับน้ำซุปมี
ที่นี่จะใช้ repoze.catalog และเพื่อให้การจัดทำดัชนีการเข้าถึงข้อมูลที่บันทึกโดยคีย์ NodeAttributeIndexer ถูกนำมาใช้ สำหรับกรณีพิเศษหนึ่งอาจเขียน indexers ที่กำหนดเองของมัน แต่อย่างใดอย่างหนึ่งเริ่มต้นที่ดีที่สุดของเวลา:
>>> จาก 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 (วัตถุ):
...
... def __call __ (ตัวเองบริบท = None):
... คู่มือ = ()
... 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
>>> ซุป = get_soup ('mysoup' บริบท)
>>> บันทึกรายการ = ()
record.attrs >>> ['ใช้'] = 'user1'
record.attrs >>> ['ข้อความ'] = u'foo บาร์ baz '
>>> record.attrs ['คำหลัก'] = [u'1 ', u'2' U '& uuml;']
>>> record_id = soup.add (บันทึก)
บันทึกอาจมีข้อมูลอื่น ๆ แต่การที่จะให้พวกเขาดัชนีหนึ่งจะต้องทำดัชนีที่กำหนดเองเพื่อบัน​​ทึก conatined usally มีคุณค่าสำหรับการแสดงผลในภายหลังไม่ได้สำหรับการค้นหา:
>>> บันทึก ['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
>>> [r สำหรับการวิจัยใน soup.query (สมการ ('ใช้', 'user1'))]
[<รายการวัตถุ 'ไม่มี' ที่ ... >]
>>> [r สำหรับการวิจัยใน soup.query (สมการ ('ใช้', 'nonexists'))]
[]
นอกจากนี้ยังได้รับขนาดของชุดผลผ่าน with_size = True แบบสอบถาม รายการแรกที่ส่งกลับโดยเครื่องกำเนิดไฟฟ้าขนาด:
>>> [r สำหรับการวิจัยใน soup.query (สมการ ('ใช้', 'user1'), with_size-True)]
[1 <รายการวัตถุ 'ไม่มี' ที่ ... >]
เพื่อเพิ่มประสิทธิภาพการจัดการของผลที่มีขนาดใหญ่ชุดหนึ่งอาจจะไม่เรียกบันทึก แต่กำเนิดกลับวัตถุที่มีน้ำหนักเบา ระเบียนที่จะถูกนำมาใช้ในการโทร:
>>> ขี้เกียจ = [ลิตรลิตรใน soup.lazy (สมการ ('ชื่อ', 'ชื่อ'))]
>>> ขี้เกียจ
[
>>> ขี้เกียจ [0] ()
<รายการวัตถุ 'ไม่มี' ที่ ... >
นี่ขนาดจะถูกส่งเป็นค่าแรกของ geneartor เกินไปถ้า with_size = true ถูกส่ง
ลบบันทึก
ในการลบบันทึกจากหลามซุปเดลถูกนำมาใช้เช่นเดียวจะทำใน Dict ใด ๆ :
>>> ซุปเดล [record_id]
reindex
หลังจากที่มีการบันทึกข้อมูลการเปลี่ยนแปลงจะต้อง reindex:
record.attrs >>> ['ใช้'] = 'user1'
>>> soup.reindex (บันทึก = [บันทึก])
บางครั้งคนเราอาจต้องการที่จะ reindex ข้อมูลทั้งหมด จากนั้น reindex จะต้องมีการเรียกโดยไม่มีพารามิเตอร์ มันอาจจะใช้เวลาสักครู่:
>>> soup.reindex ()
สร้างแคตตาล็อก
Usally หลังการเปลี่ยนแปลงของโรงงานของแคตตาล็อกได้ทำ - คือดัชนีบางส่วนถูกบันทึก - สร้างของรายการฉันต้องการ แทนที่แคตตาล็อกในปัจจุบันมีหนึ่งใหม่ที่สร้างขึ้นโดยโรงงานของแคตตาล็อกและ reindexes ข้อมูลทั้งหมด มันอาจจะใช้เวลาในขณะที่:
>>> soup.rebuild ()
รีเซ็ต (หรือล้าง) ซุป
ในการลบข้อมูลทั้งหมดจากน้ำซุปและว่างเปล่าและสร้างสายแคตตาล็อกที่ชัดเจน เรียนข้อมูลทั้งหมดจะหายไป!
>>> soup.clear ()
หมายเหตุการติดตั้ง
เพื่อที่จะใช้ Souper node.ext.zodb เป็นสิ่งจำเป็น ในฐานะที่เป็นรุ่นเบต้านี้ถูกปล่อยออกมามีการเปิดตัวไม่ (จะทำเร็ว ๆ นี้) กรุณาตรวจสอบ pypi ถ้ามันมีมิฉะนั้นโปรดเรียก node.ext.zodb จาก GitHub

มีอะไรใหม่ ในข่าวประชาสัมพันธ์ฉบับนี้.

  • PEP-8 [rnix, 2012/10/16]
  • หลาม 2.7 การสนับสนุน [rnix, 2012/10/16]
  • เอกสารแก้ไข.

ต้องการ

  • หลาม

ซอฟแวร์อื่น ๆ ของนักพัฒนา BlueDynamics Alliance

cone.ugm
cone.ugm

20 Feb 15

bdajax
bdajax

14 Apr 15

ความคิดเห็นที่ Souper

ความคิดเห็นที่ไม่พบ
เพิ่มความคิดเห็น
เปิดภาพ!