micromongo

Software screenshot:
micromongo
Dettagli del software:
Versione: 0.1.4
Data di caricamento: 14 Apr 15
Sviluppatore: Jason Moiron
Licenza: Libero
Popolarità: 2

Rating: nan/5 (Total Votes: 0)

micromongo è un piccolo strato attorno pymongo che ti permette di creare semplici classi ORM stile che può eseguire la convalida, consentire l'accesso ai documenti, dot risultati queryset auto-avvolgenti, e vi darò pre / post Salva ganci.
E 'progettato con microframeworks in mente, ma è l'applicazione e il quadro agnostico. È pensato per semplificare l'utilizzo di pymongo e fornire strumenti per idiomi comuni, non oscurare pymongo o mongodb tuoi strutture dati.
Siete invitati ad aprire i problemi o inviare richieste di trazione su github di micromongo
micromongo rende alcune decisioni di progettazione in nome della semplificazione che potrebbe non funzionare per voi:
& Nbsp; - & nbsp; micromongo mantiene una singola connessione globale, quindi non si può avere modelli che si collegano a più server MongoDB
& Nbsp; - & nbsp; ci sono una manciata di nomi di modello e nomi degli attributi dei documenti che non funziona con i modelli micromongo; questi saranno coperti nella documentazione pieno
& Nbsp; - & nbsp; si può avere un solo modello per la raccolta
Per iniziare
Per cominciare con micromongo, basta importarlo:
>>> Da micromongo import connect, modello
>>> C = connect ()
connect prende gli stessi argomenti oggetto Connection di pymongo, e si comporta in modo quasi identico, tranne che tenta di tornare automaticamente i risultati delle query avvolti negli appositi classi del modello. L'oggetto di connessione che si crea tramite questa chiamata verrà memorizzata nella cache e utilizzati dai vari servizi in stile ORM, come Model.save (), Model.proxy, ecc Se si desidera un oggetto connessione standard pulita, è possibile ottenere uno facilmente :
>>> Da micromongo import clean_connection
>>> Pulito = clean_connection ()
Si noti che clean_connection non prende argomenti e restituisce sempre una classe Connection pulito con le stesse impostazioni della connessione micromongo corrente.
Con questi oggetti di connessione, è possibile creare database o fare quello che farebbe con normali oggetti pymongo:
>>> Db = c.test_db
>>> Raccolta = db.test_collection
>>> Collection.save ({"docid": 1, "fallire": False})
>>> Collection.find_one ()
{U'_id ': ObjectId (' ... '), u'fail': Falso, u'docid ': 1}
È inoltre possibile dichiarare il proprio modello per una particolare collezione in stile dichiarativo:
>>> TestModel class (modello):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; collezione = 'test_db.test_collection'
>>> Collection.find_one ()

Queste classi hanno un numero di funzioni aggiuntive oltre un dizionario che possono rendere loro molto più comodo da usare. I tasti documento sono accessibili come attributi:
>>> T = collection.find_one ()
>>> T.fail
Falso
>>> T.docid
1
I documenti sono facilmente persistenti al database:
>>> T.docid = 17
>>> T.save ()
>>> Clean.test_db.test_collection.find_one ()
{U'_id ': ObjectId (' ... '), u'fail': Falso, u'docid ': 17}
modelli che definiscono
Sopra, l'attributo collezione è stata assegnata al nostro modello Foo. Questa è stata una scorciatoia, però; se il database e la raccolta vengono assegnati separatamente, il modello può capire il nome completo di raccolta. Se la raccolta e il database non sono presenti, micromongo tenta di capire in base al nome della classe e il modulo del vostro modello. Ad esempio, blog.Post diventerà blog.post, o stream.StreamEntry diventerà stream.stream_entry. Esplicito è meglio che implicita, ed è incoraggiato dal fatto che si imposta la raccolta manuale.
Oltre e disfare i risultati dal database, i modelli possono anche definire un documento specifica che può definire valori predefiniti ed eseguire la convalida prima di salvare il modello. Prendete un modello post sul blog banale:
>>> Dall'importazione micromongo.spec *
>>> Class Post (modello):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; raccolta = 'test_db.blog_posts'
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; spec = dict (
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; autore = Field (richiesto = True, default = 'jmoiron', type = basestring),
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; title = Field (richiesto = False, default = '', type = basestring),
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; pubblicato = Field (richiesto = True, default = False, digitare = [True, False]),
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; body = Field (tipo = unicode),
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; timestamp = Field (),
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; )
>>> P = Post.new ()
>>> P

Un paio di cose sono in corso qui. I campi che hanno un default vengono inizializzati a quella di default se sono necessari o meno. Se un campo obbligatorio non è un difetto, è inizializzata su Nessuno.
I campi possono prendere un argomento di tipo, che può essere un richiamabile che assume un valore e restituisce True o False, uno o più tipi di base, o di uno o più valori. Se vengono forniti uno o più tipi, isinstance viene utilizzato per verificare che i valori sono il tipo giusto. Se sono forniti uno o più valori, il campo agisce come un tipo enum, controllando che i valori sono nel suo insieme di valori. Se non si specifica il tipo, la convalida passa sempre su un campo a meno che non è necessario e assente.
Se un campo in p è dato un tipo non valido, allora viene sollevata un'eccezione ValueError:
>>> P.title = 10
>>> P.SAVE ()
Traceback (chiamata più recente scorso):
& Nbsp; ...
ValueError: Keys non corrisponde spec: ['title']
>>> Del p.author
>>> P.SAVE ()
Traceback (chiamata più recente scorso):
& Nbsp; ...
ValueError: campi mancanti: ['autore'], i campi non validi: ['title']
>>> P.title = 'Il mio primo blogpost'
>>> P.author = 'jmoiron'
>>> P.published = True
>>> P.body = u "Questo è il mio primo post sul blog .. & nbsp; Sono così eccitata!"
>>> P.SAVE ()
Model.find
Per comodità e DRY, Model.find è un classmethod che utilizzerà il cursore del micromongo di emettere un ritrovamento contro la collezione giusta. Questo metodo comporta esattamente come Collection.find di pymongo.
classe Cursor leggermente modificata del micromongo rende anche un metodo order_by django-ispirato a disposizione di tutti i cursori (trovare e tutto ciò si concatenano fuori se restituisce un cursore). È possibile passare uno o più nomi di campo, con un leader optional '-', per sistemare le cose in ordine crescente o decrescente.
Queste modifiche consentono di utilizzare la maggior parte del potere di pymongo senza dover importare, e consente di evitare inutili ripetizioni della posizione dei dati.
campo subclassing
Siete invitati a creare i propri campi che ciò che si desidera. Sottoclassi di campo hanno una pre_validate funzione hook che prendono un valore in ingresso e in grado di trasformarla come vogliono. Si noti che questo funziona solo se sono effettivamente presenti nei campi; in modo da ottenere qualcosa come un auto_now_add su un DateTimeField, si vuole rendere obbligatorio e avere la sua pre_validate trasformare Nessuno in datetime.datetime.now ()

Requisiti :.

  • Python

Programmi simili

Structurarium
Structurarium

20 Feb 15

mig
mig

20 Feb 15

Groovy
Groovy

28 Sep 15

JPathDB
JPathDB

11 May 15

Altri software di sviluppo Jason Moiron

speedparser
speedparser

14 Apr 15

redtape
redtape

14 Apr 15

pdf2zip
pdf2zip

11 May 15

Commenti a micromongo

I commenti non trovato
Aggiungi commento
Accendere le immagini!