Souper

Screenshot Λογισμικό:
Souper
Στοιχεία Λογισμικού:
Εκδοχή: 1.0.1
Ανεβάστε ημερομηνία: 20 Feb 15
Προγραμματιστής: BlueDynamics Alliance
Άδεια: Δωρεάν
Δημοτικότητα: 33

Rating: nan/5 (Total Votes: 0)

Σούπερ είναι ένα εργαλείο για τους προγραμματιστές της Python. Προσφέρει μια ολοκληρωμένη αποθήκευση δεμένα μεταξύ τους με δείκτες σε έναν κατάλογο. Οι εγγραφές στην αποθήκευση είναι γενικού χαρακτήρα. Είναι δυνατόν να αποθηκεύει δεδομένα σε ένα δίσκο αν είναι επίμονη pickable σε ZODB.
Souper, να χρησιμοποιηθούν σε οποιαδήποτε εφαρμογή Python χρησιμοποιώντας το ZODB, όπως Πυραμίδα ή Plone.
Χρήση Souper
Παροχή Locator
Οι σούπες κοίταξε με την προσαρμογή souper.interfaces.IStorageLocator σε κάποιο πλαίσιο. Souper δεν παρέχει καμία προεπιλογή εντοπισμού. Έτσι, πρώτη πρέπει να παρέχονται. Ας υποθέσουμε ότι το πλαίσιο είναι κάποια επίμονη dict-σαν παράδειγμα:
>>> Από zope.interface εκτελεστής εισαγωγής
>>> Από zope.interface Interface εισαγωγής
>>> Από zope.component provideAdapter εισαγωγής
>>> Από souper.interfaces εισαγωγή IStorageLocator
>>> Από souper.soup SoupData εισαγωγής
>>>implementer (IStorageLocator)
... Τάξη StorageLocator (αντικείμενο):
...
... Def __init __ (self, το πλαίσιο):
... Self.context = πλαίσιο
...
... Def αποθήκευσης (self, soup_name):
... Αν δεν σε soup_name self.context:
... Self.context [soup_name] = SoupData ()
... Self.context επιστροφής [soup_name]
>>> ProvideAdapter (StorageLocator, προσαρμόζει = [Interface])
Έτσι έχουμε εντοπισμού δημιουργώντας σούπες με βάση το όνομα με τη μύγα. Τώρα είναι εύκολο να πάρετε μια σούπα με βάση το όνομα:
>>> Από souper.soup get_soup εισαγωγής
>>> Σούπα = get_soup («mysoup», το πλαίσιο)
>>> Σούπα

Παροχή Εργοστάσιο Κατάλογος
Ανάλογα με τις ανάγκες σας, ο κατάλογος και τα ευρετήρια του μπορεί να έχει διαφορετική εμφάνιση από τη χρήση-περίπτωση να χρησιμοποιήσει περίπτωση. Το εργοστάσιο κατάλογος είναι υπεύθυνη για τη δημιουργία ενός καταλόγου για μια σούπα. Το εργοστάσιο είναι ένα βοηθητικό πρόγραμμα που ονομάζεται εφαρμογής 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 (αντικείμενο):
...
... Def __call __ (self, το πλαίσιο = Κανένα):
... Κατάλογος Κατάλογος = ()
... Userindexer = NodeAttributeIndexer («χρήστης»)
... Κατάλογος [u'user '] = CatalogFieldIndex (userindexer)
... Textindexer = NodeAttributeIndexer («κείμενο»)
... Κατάλογος [u'text '] = CatalogTextIndex (textindexer)
... Keywordindexer = NodeAttributeIndexer («λέξεις-κλειδιά»)
... Κατάλογος [u'keywords '] = CatalogKeywordIndex (keywordindexer)
... Κατάλογος επιστροφή
>>> ProvideUtility (MySoupCatalogFactory (), name = "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 (εγγραφή)
Ένα αρχείο μπορεί να περιέχει και άλλα αρχεία. Αλλά για να τους δείκτη κάποιος θα χρειαστεί ένα έθιμο indexer, έτσι usally conatined αρχεία είναι πολύτιμες για αργότερα οθόνη, όχι για την αναζήτηση:
>>> Ρεκόρ [«subrecord '] = Record ()
>>> Ρεκόρ [«homeaddress»]. Attrs ['φερμουάρ'] = '6020'
>>> Ρεκόρ [«homeaddress»]. Attrs ['πόλη'] = 'Ίνσμπρουκ »
>>> Ρεκόρ [«homeaddress»]. Attrs [«χώρα»] = «Αυστρία»
Πρόσβαση σε δεδομένα
Ακόμη και χωρίς οποιαδήποτε απορία ένα αρχείο μπορείτε να το βρείτε με ID:
>>> Από souper.soup get_soup εισαγωγής
>>> Σούπα = get_soup («mysoup», το πλαίσιο)
>>> Ρεκόρ = soup.get (record_id)
Όλα τα αρχεία μπορούν να προσεγγιστούν με τη χρήση χρησιμοποιώντας το Β + -tree περιέκτη:
>>> Soup.data.keys () [0] == record_id
Αληθής
Τα δεδομένα ερωτήματος
Τρόπος υποβολής ερωτημάτων έναν κατάλογο repoze τεκμηριώνεται καλά. Ταξινόμηση λειτουργεί με τον ίδιο και εγώ. Τα ερωτήματα πέρασε σε σούπες μέθοδος ερώτημα (το οποίο χρησιμοποιεί στη συνέχεια κατάλογος repoze). Επιστρέφει μια γεννήτρια:
>>> Από repoze.catalog.query Εξ εισαγωγής
>>> [R για r σε soup.query (εξίσωση («χρήστης», «user1 '))]
[<Αντικείμενο Record «Ουδέν» στην ...>]
>>> [R για r σε soup.query (εξίσωση («χρήστης», «nonexists»))]
[]
Για να πάρετε επίσης το μέγεθος του συνόλου των αποτελεσμάτων περάσει μια with_size = Πιστός στο ερώτημα. Το πρώτο στοιχείο που επιστρέφεται από τη γεννήτρια είναι το μέγεθος:
>>> [R για r σε soup.query (εξίσωση («χρήστης», «user1 '), with_size-True)]
[1, <Εγγραφή αντικείμενο «Ουδέν» στην ...>]
Για να βελτιστοποιήσουν τη διαχείριση των μεγάλων αποτέλεσμα θέτει κάποιος μπορεί να μην φέρει το ρεκόρ, αλλά μια γεννήτρια φωτός που επιστρέφουν βάρος αντικείμενα. Τα αρχεία απέφερε στην κλήση:
>>> Τεμπέλης = [l για l σε soup.lazy (εξίσωση («όνομα», «όνομα»))]
>>> Τεμπέλης
[,
>>> Τεμπέλης [0] ()
<Εγγραφή αντικείμενο «Ουδέν» στη ...>
Εδώ το μέγεθος έχει περάσει ως πρώτη τιμή του geneartor πάρα πολύ αν with_size = true έχει περάσει.
Διαγραφή ρεκόρ
Για να αφαιρέσετε ένα αρχείο από τον πύθωνα σούπα del χρησιμοποιείται όπως πρέπει να κάνουμε σε κάθε dict:
>>> Del σούπα [record_id]
Αναδημιουργία
Μετά από μια καταγράφει δεδομένα άλλαξαν χρειάζεται μια Reindex:
>>> Record.attrs ['χρήστης'] = 'user1'
>>> Soup.reindex (αρχεία = [αρχείο])
Μερικές φορές μπορεί κανείς να θέλει να αναπροσαρμόσετε όλα τα δεδομένα. Στη συνέχεια Reindex έχει να ονομάζεται χωρίς παραμέτρους. Μπορεί να πάρει λίγο χρόνο:
>>> Soup.reindex ()
Ανακατασκευή Κατάλογος
Usally μετά από μια αλλαγή του καταλόγου εργοστασίου έγινε - δηλαδή περίπου δείκτης προστέθηκε - μια ανακατασκευή του καταλόγου που χρειαζόμουν. Αντικαθιστά το σημερινό κατάλογο με ένα νέο που δημιουργείται από το εργοστάσιο καταλόγου και reindexes όλα τα δεδομένα. Μπορεί να πάρει λίγο:
>>> Soup.rebuild ()
Επαναφορά (ή να διαγράψετε) τη σούπα
Για να αφαιρέσετε όλα τα δεδομένα από τη σούπα και τα κενά και να ανοικοδομήσουν τον κατάλογο κλήσεων σαφής. Προσοχή: όλα τα δεδομένα θα χαθούν!
>>> Soup.clear ()
Σημειώσεις installation
Για να χρησιμοποιήσετε Souper node.ext.zodb χρειάζεται. Καθώς αυτή η βήτα κυκλοφόρησε δεν υπήρχε απελευθέρωση (θα γίνει σύντομα). Παρακαλώ ελέγξτε pypi αν υπάρχει, αλλιώς παρακαλώ φέρω node.ext.zodb από το GitHub

Τι είναι καινούργιο σε αυτή την έκδοση:.

  • PEP-8. [Rnix, 10.16.2012]
  • Python 2.7 Υποστήριξη. [Rnix, 10.16.2012]
  • τεκμηρίωση Fix.

Απαιτήσεις :

  • Python

Άλλο λογισμικό του προγραμματιστή BlueDynamics Alliance

bdajax
bdajax

14 Apr 15

lineage.registry
lineage.registry

14 Apr 15

Σχόλια για Souper

Τα σχόλια δεν βρέθηκε
προσθήκη σχολίου
Ενεργοποιήστε τις εικόνες!