micromongo

Sagteware kiekie:
micromongo
Sagteware besonderhede:
Weergawe: 0.1.4
Upload datum: 14 Apr 15
Ontwikkelaar: Jason Moiron
Lisensie: Gratis
Populariteit: 2

Rating: nan/5 (Total Votes: 0)

micromongo is 'n klein lagie rondom pymongo waarmee jy eenvoudig ORM-styl klasse wat kan voer validering, laat dot toegang tot dokumente, motor-wrap queryset resultate, en gee jou pre / post save hakies te skep.
Dit is ontwerp om met microframeworks in gedagte, maar dit is die toepassing en die raamwerk agnostikus. Dit is bedoel gebruik van pymongo te vereenvoudig en instrumente vir algemene idiome, nie pymongo of mongodb te verduister van jou data strukture.
Jy is welkom om kwessies te maak of stuur pull versoeke op micromongo se GitHub
micromongo maak 'n paar ontwerp besluite in die naam van vereenvoudiging dat dit nie vir jou kan werk:
& Nbsp; - & nbsp; micromongo handhaaf 'n enkele globale verband, so jy kan nie modelle wat koppel aan verskeie mongodb bedieners
& Nbsp; - & nbsp; daar is 'n handjie van model name en dokument kenmerk name wat nie sal werk met micromongo modelle; hierdie sal in die volle docs gedek word
& Nbsp; - & nbsp; jy kan slegs een model per versameling
Aan die slag
Om mee te begin met micromongo, invoer net:
>>> Van micromongo invoer verbind, Model
>>> C = konnekteer ()
Connect neem dieselfde argumente as pymongo se Connection voorwerp, en tree byna identies, behalwe dat dit poog om outomaties navraag resultate toegedraai in die geskikte model klasse terugkeer. Die verband voorwerp wat jy skep via hierdie oproep sal die kas word en gebruik word deur die verskillende ORM-styl fasiliteite soos Model.save (), Model.proxy, ens As jy wil 'n skoon, standaard Connection voorwerp, kan jy een maklik :
>>> Van micromongo invoer clean_connection
>>> Skoon = clean_connection ()
Let daarop dat clean_connection nie argumente neem en sal altyd terug 'n skoon Connection klas met dieselfde instellings soos die huidige micromongo verbinding.
Met hierdie verband voorwerpe, kan jy databasisse skep of doen wat jy wil met 'n normale pymongo voorwerpe:
>>> Db = c.test_db
>>> Versameling = db.test_collection
>>> Collection.save ({"docid": 1, "druip": Vals})
>>> Collection.find_one ()
{U'_id ': object (' ... '), u'fail': Vals, u'docid ': 1}
Jy kan ook verklaar jou eie model vir 'n spesifieke versameling in verklarende styl:
>>> Klas TestModel (Model):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; versameling = 'test_db.test_collection'
>>> Collection.find_one ()

Hierdie klasse het 'n aantal addisionele funksies oor 'n woordeboek wat kan maak dat hulle baie meer gerieflik om te gebruik. Die dokument sleutels is al toeganklik as eienskappe:
>>> T = collection.find_one ()
>>> T.fail
Valse
>>> T.docid
1
Die dokumente is ook maklik volgehou tot die databasis:
>>> T.docid = 17
>>> T.save ()
>>> Clean.test_db.test_collection.find_one ()
{U'_id ': object (' ... '), u'fail': Vals, u'docid ': 17}
definieer modelle
Bo is die versameling kenmerk opgedra aan ons Foo model. Dit was 'n kortpad, al; As databasis en versameling afsonderlik toegeken is, kan die model uit te vind die volle naam versameling. As die versameling en databasis nie teenwoordig is nie, micromongo pogings om dit uit te vind wat gebaseer is op die klas en module naam van jou Model. Byvoorbeeld, sal blog.Post geword blog.post, of stream.StreamEntry sal stream.stream_entry geword. Eksplisiete is beter as implisiete, en dit is bemoedigend dat jy dit handmatig die versameling.
Behalwe verpakking en pak die resultate van die databasis, modelle kan ook definieer 'n spec dokument wat standaard kan definieer en uit te voer validering voordat die redding van die model. Neem 'n triviale blog post model:
>>> Van micromongo.spec invoer *
>>> Klas Post (Model):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; versameling = 'test_db.blog_posts'
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; spec = dict (
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; skrywer = Field (vereis = True, verstek = 'jmoiron', type = basestring),
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; title = Field (vereis = Vals, verstek = '', type = basestring),
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; gepubliseer = Field (vereis = True, verstek = Vals, type = [True, False]),
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; liggaam = Field (type = unicode),
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; tyd stempel = Field (),
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; )
>>> P = Post.new ()
>>> P

'N Paar dinge hier aangaan nie. Velde wat 'n verstek is geïnisialiseer aan daardie standaard of hulle nodig het of nie. As 'n vereiste veld nie 'n verstek, is dit geïnisialiseer Geen.
Fields kan neem om 'n tipe argument, wat óf kan wees om 'n call able wat nie 'n waarde en terug Waar of Onwaar, een of meer base tipes, of een of meer waardes. As een of meer tipes word, is isinstance gebruik om te toets dat waardes die regte tipe. As een of meer waardes verskaf word, die Field dien as 'n enum tipe, nagaan dat waardes in sy stel waardes. Indien geen tipe gegee, validering gaan altyd op 'n veld nie, tensy dit nodig is en afwesig.
As 'n veld in p gegee 'n ongeldige tipe, dan 'n ValueError geopper:
>>> P.title = 10
>>> P.save ()
Stapelspoor (mees onlangse oproep laaste):
& Nbsp; ...
ValueError: Keys het nie ooreen spec: ['title']
>>> Del p.author
>>> P.save ()
Stapelspoor (mees onlangse oproep laaste):
& Nbsp; ...
ValueError: Missing velde: ["skrywer '], Ongeldige velde: [' title ']
>>> P.title = "My eerste blog post '
>>> P.author = 'jmoiron'
>>> P.published = True
>>> P.body = u "Dit is my eerste blog post .. & nbsp; Ek is so opgewonde!"
>>> P.save ()
Model.find
Vir gerief en droog, Model.find is 'n classmethod wat micromongo se wyser gebruik om 'n vonds teen die reg versameling uit te reik. Hierdie metode gedrag presies dieselfde as pymongo se Collection.find.
micromongo se effens aangepaste wyser klas maak ook 'n Django-geïnspireerde order_by metode beskikbaar vir alle wysers (vind en enigiets wat jy ketting af as dit gee 'n wyser). Jy kan een of meer veldname slaag, met 'n opsionele voorste '-', dinge uit te sorteer deur stygende of dalende orde.
Hierdie veranderinge kan jy die meeste van die krag van pymongo te gebruik sonder om dit in te voer, en kan jy vermy onnodige herhaling van die ligging van jou data.
gebied subclassing
Jy word aangemoedig om jou eie Fields wat doen wat jy wil skep. Gebied subklasse het 'n haak funksie pre_validate wat neem 'n inkomende waarde en kan dit verander egter hulle wil. Let daarop dat dit slegs sal werk indien die velde is eintlik teenwoordig; so iets soos 'n auto_now_add op 'n DateTimeField te kry, sal jy wil om dit te laat verlang en het sy pre_validate draai Geen in datetime.datetime.now ()

Vereistes :.

  • Python

Soortgelyke sagteware

datanommer
datanommer

20 Feb 15

GTKO
GTKO

11 May 15

Qore uuid Module
Qore uuid Module

20 Feb 15

Ander sagteware ontwikkelaar Jason Moiron

pdf2zip
pdf2zip

11 May 15

speedparser
speedparser

14 Apr 15

redtape
redtape

14 Apr 15

Kommentaar te micromongo

Kommentaar nie gevind
Kommentaar te lewer
Draai op die foto!