Souper

Phần mềm chụp màn hình:
Souper
Các chi tiết về phần mềm:
Phiên bản: 1.0.1
Ngày tải lên: 20 Feb 15
Nhà phát triển: BlueDynamics Alliance
Giấy phép: Miễn phí
Phổ biến: 4

Rating: nan/5 (Total Votes: 0)

Souper là một công cụ lập trình Python cho. Nó cung cấp một lưu trữ tích hợp gắn liền với nhau với những mục trong một danh mục. Các bản ghi trong lưu trữ là chung chung. Nó có thể lưu trữ dữ liệu trên một bản ghi nếu nó là pickable dai dẳng trong ZODB.
Souper có thể được sử dụng được sử dụng trong bất kỳ ứng dụng python sử dụng ZODB, như Kim tự tháp hay Plone.
Sử dụng Souper
Cung cấp một Locator
Súp đang nhìn lên bằng cách thích ứng souper.interfaces.IStorageLocator một số ngữ cảnh. Souper không cung cấp bất kỳ định vị mặc định. Vì vậy, đầu tiên cần phải được cung cấp. Hãy giả định bối cảnh là một số ví dụ dict giống như liên tục:
>>> Từ zope.interface nhập người thực hiện
>>> Từ zope.interface Giao diện nhập khẩu
>>> Từ zope.component provideAdapter nhập khẩu
>>> Từ souper.interfaces nhập IStorageLocator
>>> Từ souper.soup SoupData nhập khẩu
>>>implementer (IStorageLocator)
... Lớp StorageLocator (object):
...
... Def __init __ (self, ngữ cảnh):
... Self.context = bối cảnh
...
... Def lưu trữ (self, soup_name):
... Nếu soup_name không self.context:
... Self.context [soup_name] = SoupData ()
... Trở lại self.context [soup_name]
>>> ProvideAdapter (StorageLocator, thích nghi = [Giao diện])
Vì vậy, chúng ta phải định vị tạo súp theo tên trên bay. Bây giờ nó dễ dàng để có được một món súp theo tên:
>>> Từ souper.soup nhập get_soup
>>> Súp = get_soup ('mysoup', ngữ cảnh)
>>> Súp

Cung cấp một nhà máy Catalog
Tùy thuộc vào nhu cầu của bạn các cửa hàng và chỉ số của nó có thể trông khác trường hợp sử dụng để sử dụng hợp cụ thể. Nhà máy catalog là trách nhiệm để tạo ra một danh mục cho một món súp. Nhà máy là một tiện ích có tên thực hiện souper.interfaces.ICatalogFactory. Tên của cơ quan điện đến giống như súp có.
Đây repoze.catalog được sử dụng và để cho các chỉ số truy cập dữ liệu trên các hồ sơ bằng phím NodeAttributeIndexer được sử dụng. Đối với các trường hợp đặc biệt có thể viết một bộ chỉ mục tùy chỉnh của nó, nhưng một trong những mặc định là tốt nhất về thời gian:
>>> Từ souper.interfaces nhập ICatalogFactory
>>> Từ souper.soup nhập NodeAttributeIndexer
>>> Từ zope.component provideUtility nhập khẩu
>>> Từ repoze.catalog.catalog Catalog nhập khẩu
>>> Từ repoze.catalog.indexes.field nhập CatalogFieldIndex
>>> Từ repoze.catalog.indexes.text CatalogTextIndex nhập khẩu
>>> Từ repoze.catalog.indexes.keyword CatalogKeywordIndex nhập khẩu
>>>implementer (ICatalogFactory)
... Lớp MySoupCatalogFactory (object):
...
... Def __call __ (self, context = None):
... Danh mục = Catalog ()
... Userindexer = NodeAttributeIndexer (mã người dùng)
... Danh mục [u'user '] = CatalogFieldIndex (userindexer)
... Textindexer = NodeAttributeIndexer ('text')
... Danh mục [u'text '] = CatalogTextIndex (textindexer)
... Keywordindexer = NodeAttributeIndexer ('từ khóa')
... Danh mục [u'keywords '] = CatalogKeywordIndex (keywordindexer)
... Trở lại Danh mục
>>> ProvideUtility (MySoupCatalogFactory (), name = "mysoup")
Nhà máy Danh mục được sử dụng súp-nội chỉ nhưng người ta có thể muốn kiểm tra xem nó hoạt động tốt:
>>> Catalogfactory = getUtility (ICatalogFactory, name = 'mysoup')
>>> Catalogfactory

>>> Danh mục = catalogfactory ()
>>> Sắp xếp (catalog.items ())
[(U'keywords ', ),
(U'text ', ),
(U'user ', )]
Thêm hồ sơ
Như đã đề cập ở trên souper.soup.Record là một và chỉ một loại dữ liệu thêm vào súp. Một hồ sơ có thuộc tính có chứa các dữ liệu:
>>> Từ souper.soup nhập get_soup
>>> Từ souper.soup khẩu Ghi
>>> Súp = get_soup ('mysoup', ngữ cảnh)
>>> Kỷ lục = Record ()
>>> Record.attrs ['user'] = 'user1'
>>> Record.attrs ['text'] = u'foo bar baz '
>>> Record.attrs ['từ khóa'] = [u'1 ', u'2', u '& uuml;']
>>> Record_id = soup.add (ghi)
Một hồ sơ có thể chứa các hồ sơ khác. Nhưng chỉ mục chúng ta sẽ cần một indexer tùy chỉnh, hồ sơ để usally conatined có giá trị cho màn hình sau, không phải để tìm kiếm:
>>> Kỷ lục ['subrecord'] = Record ()
>>> Kỷ lục ['homeaddress']. Attrs ['zip'] = '6020'
>>> Kỷ lục ['homeaddress']. Attrs ['thị trấn'] = 'Innsbruck'
>>> Kỷ lục ['homeaddress']. Attrs ['nước'] = 'Áo'
Truy cập dữ liệu
Mặc dù không có bất kỳ truy vấn một kỷ lục có thể được lấy bằng id:
>>> Từ souper.soup nhập get_soup
>>> Súp = get_soup ('mysoup', ngữ cảnh)
>>> Kỷ lục = soup.get (record_id)
Tất cả các hồ sơ có thể được truy cập bằng cách sử dụng các BTree container:
>>> Soup.data.keys () [0] == record_id
Thật
Truy vấn dữ liệu
Làm thế nào để truy vấn một danh mục repoze là tài liệu tốt. Phân loại hoạt động giống quá. Truy vấn được truyền vào súp phương pháp truy vấn (trong đó sử dụng sau đó catalog repoze). Nó trả về một máy phát điện:
>>> Từ repoze.catalog.query nhập Eq
>>> [R cho r trong soup.query (Eq ('người sử dụng', 'user1'))]
[]
>>> [R cho r trong soup.query (Eq ('người sử dụng', 'nonexists'))]
[]
Để có được kích thước của các tập hợp kết quả thông qua một with_size = True để truy vấn. Mục đầu tiên được trả về bởi các máy phát điện là các kích thước:
>>> [R cho r trong soup.query (Eq ('người sử dụng', 'user1'), with_size-True)]
[1, ]
Để tối ưu hóa xử lý các kết quả lớn đưa người ta có thể không để lấy các bản ghi nhưng một máy phát điện trở lại đối tượng trọng lượng nhẹ. Hồ sơ được lấy về cuộc gọi:
>>> Lười = [l l trong soup.lazy (Eq ('name', 'name'))]
>>> Lười biếng
[,
>>> Lười biếng [0] ()

Ở đây, kích thước được thông qua như là giá trị đầu tiên của geneartor quá nếu with_size = True được thông qua.
Xóa một bản ghi
Để loại bỏ một bản ghi từ python súp del được sử dụng như một sẽ làm trên bất kỳ dict:
>>> Del súp [record_id]
Reindex
Sau khi một bản ghi dữ liệu thay đổi nó cần một reindex:
>>> Record.attrs ['user'] = 'user1'
>>> Soup.reindex (ghi = [lục])
Đôi khi người ta có thể muốn reindex tất cả các dữ liệu. Sau đó reindex đã được gọi là không có tham số. Nó có thể mất một thời gian:
>>> Soup.reindex ()
Xây dựng lại danh mục
Usally sau khi một sự thay đổi của nhà máy đã được thực hiện Danh mục - tức là một số chỉ số được thêm vào - xây dựng lại các cửa hàng của tôi cần. Nó thay thế các cửa hàng hiện tại với một cái mới được tạo ra bởi các nhà máy catalog và reindexes tất cả dữ liệu. Nó có thể mất khi:
>>> Soup.rebuild ()
Thiết lập lại (hoặc xóa) các món canh
Để xóa tất cả các dữ liệu từ các món canh và trống rỗng và xây dựng lại các cuộc gọi Danh mục rõ ràng. Chú ý: tất cả các dữ liệu bị mất!
>>> Soup.clear ()
Ghi chú Cài đặt
Để sử dụng node.ext.zodb Souper là cần thiết. Như beta này được phát hành không có bản phát hành (sẽ được thực hiện sớm). Vui lòng kiểm tra pypi nếu nó là có, nếu không thì phải lấy node.ext.zodb từ github

là gì mới trong phiên bản này:.

  • PEP-8. [Rnix, 2012/10/16]
  • Hỗ trợ Python 2.7. [Rnix, 2012/10/16]
  • Fix tài liệu.

Yêu cầu :

  • Python

Phần mềm khác của nhà phát triển BlueDynamics Alliance

vdexcsv
vdexcsv

11 May 15

lineage.registry
lineage.registry

14 Apr 15

Ý kiến ​​để Souper

Bình luận không
Nhập bình luận
Bật hình ảnh!