micromongo

Screenshot Λογισμικό:
micromongo
Στοιχεία Λογισμικού:
Εκδοχή: 0.1.4
Ανεβάστε ημερομηνία: 14 Apr 15
Προγραμματιστής: Jason Moiron
Άδεια: Δωρεάν
Δημοτικότητα: 2

Rating: nan/5 (Total Votes: 0)

micromongo είναι ένα μικρό στρώμα γύρω pymongo που σας επιτρέπει να δημιουργήσετε μια απλή τάξεις ORM-ύφος που μπορεί να εκτελέσει την επικύρωση, να επιτρέψει την πρόσβαση σε έγγραφα τελεία, τα αποτελέσματα queryset Auto-wrap, και να σας δώσει pre / post Αποθήκευση άγκιστρα.
Είναι σχεδιασμένο με microframeworks στο μυαλό, αλλά είναι η εφαρμογή και το πλαίσιο αγνωστικιστής. Έχει ως στόχο να απλοποιήσει τη χρήση του pymongo και να παρέχει εργαλεία για κοινή ιδιώματα, να μην επισκιάζει pymongo ή MongoDB από τις δομές δεδομένων σας.
Είστε ευπρόσδεκτοι να ανοίξει ζητήματα ή να απευθύνει αιτήματα τράβηγμα στο GitHub micromongo του
micromongo κάνει μερικές σχεδιαστικές αποφάσεις στο όνομα της απλούστευσης που δεν θα μπορούσε να λειτουργήσει για σας:
& Nbsp? - & Nbsp? micromongo διατηρεί μια ενιαία παγκόσμια σύνδεση, έτσι δεν μπορείτε να έχετε μοντέλα που συνδέονται με πολλαπλούς διακομιστές MongoDB
& Nbsp? - & Nbsp? υπάρχουν μια χούφτα των ονομάτων μοντέλο και έγγραφο ονόματα χαρακτηριστικό που δεν θα συνεργαστεί με τα μοντέλα micromongo? αυτά θα καλυφθούν από τα πλήρη docs
& Nbsp? - & Nbsp? μπορείτε να έχετε μόνο ένα μοντέλο ανά συλλογή
Ξεκινώντας
Για να ξεκινήσετε με micromongo, απλά εισάγετε:
>>> Από την εισαγωγή micromongo συνδεθείτε, Μοντέλο
>>> Γ = connect ()
Connect παίρνει τα ίδια επιχειρήματα ως αντικείμενο Connection pymongo του και συμπεριφέρεται σχεδόν πανομοιότυπα, εκτός από το ότι προσπαθεί να επιστρέψει αυτόματα τα αποτελέσματα του ερωτήματος τυλιγμένο στις κατάλληλες κατηγορίες μοντέλων. Το αντικείμενο σύνδεσης που δημιουργείτε μέσω της παρούσας πρόσκλησης θα είναι αποθηκευμένο και χρησιμοποιείται από τις διάφορες εγκαταστάσεις ORM-στυλ, όπως Model.save (), Model.proxy, κλπ Αν θέλετε ένα καθαρό, πρότυπο αντικείμενο Connection, μπορείτε να πάρετε ένα εύκολα :
>>> Από micromongo clean_connection εισαγωγής
>>> Καθαρό = clean_connection ()
Σημειώστε ότι clean_connection δεν λαμβάνει επιχειρήματα και θα επιστρέφει πάντα ένα καθαρό κατηγορία σύνδεσης με τις ίδιες ρυθμίσεις με την τρέχουσα σύνδεση micromongo.
Με αυτά τα αντικείμενα σύνδεσης, μπορείτε να δημιουργήσετε βάσεις δεδομένων ή να κάνετε ό, τι θα κάνατε με κανονικό αντικείμενα pymongo:
>>> Db = c.test_db
>>> Συλλογή = db.test_collection
>>> Collection.save ({"docid": 1, "αποτύχει": Λάθος})
>>> Collection.find_one ()
{U'_id »: OBJECTID (« ... »), u'fail»: Λάθος, u'docid »: 1}
Μπορείτε επίσης να δηλώσουν το δικό σας μοντέλο για μια συγκεκριμένη συλλογή σε δηλωτική στυλ:
>>> Κατηγορία TestModel (Μοντέλο):
& Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? συλλογή = 'test_db.test_collection »
>>> Collection.find_one ()

Αυτές οι κατηγορίες έχουν μια σειρά από επιπλέον χαρακτηριστικά από ένα λεξικό που μπορεί να τους κάνουν πολύ πιο βολικό στη χρήση. Τα κλειδιά του εγγράφου είναι όλα προσβάσιμα ως χαρακτηριστικά:
>>> T = collection.find_one ()
>>> T.fail
Ψευδής
>>> T.docid
1
Τα έγγραφα είναι επίσης εύκολα επέμενε στη βάση δεδομένων:
>>> T.docid = 17
>>> T.save ()
>>> Clean.test_db.test_collection.find_one ()
{U'_id »: OBJECTID (« ... »), u'fail»: Λάθος, u'docid »: 17}
που καθορίζει τα μοντέλα
Πάνω, το χαρακτηριστικό συλλογή ανατέθηκε στο μοντέλο Foo μας. Αυτή ήταν μια συντόμευση, αν? Εάν η βάση δεδομένων και συλλογή έχουν εκχωρηθεί χωριστά, το μοντέλο μπορεί να καταλάβω το πλήρες όνομα για τη συλλογή. Εάν η συλλογή και η βάση δεδομένων δεν είναι παρόντες, micromongo επιχειρεί να το καταλάβω με βάση την τάξη και την ενότητα όνομα του μοντέλου σας. Για παράδειγμα, blog.Post θα γίνει blog.post, ή stream.StreamEntry θα γίνει stream.stream_entry. Ρητή είναι καλύτερη από ό, τι υπονοείται, και αυτό είναι ενθαρρυντικό το γεγονός ότι έχετε ορίσει τη συλλογή με το χέρι.
Εκτός από τη συσκευασία και αποσυσκευασία αποτελέσματα από τη βάση δεδομένων, μοντέλα μπορούν επίσης να καθορίσουν ένα έγγραφο προδιαγραφών που μπορεί να καθορίσει τις προεπιλογές και να εκτελέσει την επικύρωση πριν από την αποθήκευση του μοντέλου. Πάρτε ένα ασήμαντο blog post μοντέλο:
>>> Από micromongo.spec εισαγωγής *
>>> Δημοσίευση κατηγορία (Μοντέλο):
& Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? συλλογή = 'test_db.blog_posts »
& Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? spec = dict (
& Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? Συγγραφέας = Πεδίο (απαιτείται = True, προεπιλογή = "jmoiron», ο τύπος = basestring),
& Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? title = Πεδίο (απαιτείται = False, προεπιλογή = '', πληκτρολογήστε = basestring),
& Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? δημοσιεύθηκε = Πεδίο (απαιτείται = True, προεπιλογή = False, τύπος = [true, false]),
& Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? σώματος = Πεδίο (type = Unicode),
& Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? timestamp = πεδίο (),
& Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? )
>>> P = Post.new ()
>>> P
<Δημοσίευση: {«τίτλος»: u '', 'συγγραφέα: u'jmoiron »,« δημοσιεύθηκε »: Λάθος}>
Μερικά πράγματα που συμβαίνουν εδώ. Τα πεδία που έχουν μια προκαθορισμένη προετοιμαστεί για αυτή την προεπιλογή αν απαιτείται ή όχι. Εάν ένα απαιτούμενο πεδίο δεν έχει προεπιλογή, αυτό είναι αρχικοποιείται σε Κανένα.
Τα πεδία μπορεί να πάρει ένα επιχείρημα του τύπου, η οποία μπορεί να είναι είτε ένα απαιτητών που παίρνει μια τιμή και επιστρέφει True ή False, έναν ή περισσότερους τύπους βάσης, ή μία ή περισσότερες τιμές. Εάν ένα ή περισσότερα είδη που παρέχονται, isinstance χρησιμοποιείται για να ελέγξετε ότι οι τιμές είναι ο σωστός τύπος. Εάν μία ή περισσότερες τιμές που παρέχονται, το πεδίο δρα ως ένα είδος απαρίθμησης, ελέγχοντας ότι οι τιμές είναι σε σετ των αξιών. Αν δεν δίνεται ο τύπος, η επικύρωση περνάει πάντα πάνω σε ένα πεδίο, εκτός αν αυτό απαιτείται, και απουσιάζει.
Εάν ένα πεδίο στο ρ δίνεται ένα έγκυρο τύπο, τότε ένα ValueError αυξάνεται:
>>> P.title = 10
>>> P.save ()
Traceback (πιο πρόσφατη κλήση τελευταία):
& Nbsp? ...
ValueError: Πλήκτρα δεν ταιριάζει spec: [«τίτλος»]
>>> Del p.author
>>> P.save ()
Traceback (πιο πρόσφατη κλήση τελευταία):
& Nbsp? ...
ValueError: Λείπει πεδία: [«συγγραφέας»], Άκυρα πεδία: [«τίτλος»]
>>> P.title = "Η πρώτη μου blogpost»
>>> P.author = 'jmoiron »
>>> P.published = True
>>> P.body = u "Αυτό είναι το πρώτο μου blog post .. & nbsp? Είμαι τόσο ενθουσιασμένος!"
>>> P.save ()
Model.find
Για λόγους ευκολίας και ξηρό, Model.find είναι ένα classmethod που θα χρησιμοποιήσει δρομέα micromongo να εκδώσει ένα εύρημα κατά τη σωστή συλλογή. Η μέθοδος αυτή συμπεριφέρεται ακριβώς το ίδιο όπως Collection.find pymongo του.
ελαφρώς τροποποιημένη κατηγορία Δρομέας micromongo κάνει επίσης μια μέθοδο order_by Django εμπνευσμένη διαθέσιμη σε όλους τους δρομείς (βρείτε και οτιδήποτε αλυσίδα μακριά σε περίπτωση που επιστρέφει ένα δρομέα). Μπορείτε να περάσετε ένα ή περισσότερα ονόματα τομέα, με ένα προαιρετικό ηγετικό '-', για να τακτοποιήσει τα πράγματα με αύξουσα ή φθίνουσα σειρά.
Οι αλλαγές αυτές σας επιτρέπουν να χρησιμοποιήσετε το μεγαλύτερο μέρος της δύναμης του pymongo χωρίς να χρειάζεται να εισάγουμε, και σας επιτρέπει να αποφύγετε περιττές επαναλήψεις της θέσης των δεδομένων σας.
πεδίο υποκλάσεις
Σας ενθαρρύνουμε να δημιουργήσετε τις δικές σας Τα πεδία που κάνει ό, τι θέλετε. Υποκατηγορίες τομέα έχει pre_validate λειτουργία άγκιστρο, το οποίο λαμβάνει μια εισερχόμενη αξία και μπορεί να μετατρέψει όμως θέλουν. Σημειώστε ότι αυτό θα δουλέψει μόνο αν τα πεδία είναι πράγματι? έτσι για να πάρετε κάτι σαν auto_now_add σε DateTimeField, θα θέλετε να κάνετε αυτό που απαιτείται και έχει pre_validate της σειρά Κανένας σε datetime.datetime.now ()

Απαιτήσεις :.

  • Python

Παρόμοια λογισμικά

Άλλο λογισμικό του προγραμματιστή Jason Moiron

pdf2zip
pdf2zip

11 May 15

redtape
redtape

14 Apr 15

speedparser
speedparser

14 Apr 15

Σχόλια για micromongo

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