micromongo

Skjermbilde programvare:
micromongo
Prog.varedetaljer:
Versjon: 0.1.4
Last opp dato: 14 Apr 15
Utvikler: Jason Moiron
Lisens: Gratis
Popularitet: 2

Rating: nan/5 (Total Votes: 0)

micromongo er et lite lag rundt pymongo som lar deg lage enkle ORM-stil klasser som kan utføre validering, tillater dot tilgang til dokumenter, auto-wrap queryset resultater, og gi deg pre / post lagre kroker.
Den er designet med microframeworks i tankene, men er søknad og rammeverk agnostiker. Det er ment å forenkle bruken av pymongo og tilby verktøy for felles idiomer, ikke å skjule pymongo eller mongodb fra datastrukturer.
Du er velkommen til å åpne spørsmål eller sende pull forespørsler på micromongo sin github
micromongo gjør noen design beslutninger i navnet på forenkling som kanskje ikke fungerer for deg:
& Nbsp; - & nbsp; micromongo opprettholder en enkelt global tilkobling, slik at du kan ikke ha modeller som kobles til flere mongodb servere
& Nbsp; - & nbsp; det er en håndfull av modellnavn og dokumentattributtnavn som ikke vil fungere med micromongo modeller; disse vil bli dekket i den fulle docs
& Nbsp; - & nbsp; du kan bare ha én modell per samling
komme i gang
Til å begynne med micromongo, bare importere det:
>>> Fra micromongo import koble til, Model
>>> C = koble ()
connect tar de samme argumentene som Connection objektet pymongo tallet, og oppfører seg nesten identisk, bortsett fra at den forsøker å spørringsresultatene innpakket i de aktuelle Modell klasser automatisk tilbake. Tilkoblingen objekt som du oppretter via denne samtalen vil bli lagret og brukt av de ulike ORM-stil fasiliteter, som Model.save (), Model.proxy, etc. Hvis du ønsker en ren, standard Connection objektet, kan du få en lett :
>>> Fra micromongo import clean_connection
>>> Ren = clean_connection ()
Merk at clean_connection tar ikke argumenter og vil alltid returnere en ren Connection klasse med de samme innstillingene som den nåværende micromongo tilkobling.
Med disse tilkoblingsobjekter, kan du opprette databaser eller gjøre hva du ville gjort med vanlige pymongo objekter:
>>> Db = c.test_db
>>> Samling = db.test_collection
>>> Collection.save ({"docid": 1, "ikke bestått": False})
>>> Collection.find_one ()
{U'_id ': objectID ("..."), u'fail': False, u'docid ': 1}
Du kan også erklære din egen modell for en spesiell samling i deklarative stil:
>>> Klasse TestModel (modell):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; samling = 'test_db.test_collection'
>>> Collection.find_one ()

Disse klassene har en rekke ekstra funksjoner enn en ordbok som kan gjøre dem mye mer praktisk å bruke. Dokument tastene er alle tilgjengelige som attributter:
>>> T = collection.find_one ()
>>> T.fail
False
>>> T.docid
1
Dokumentene er også lett vedvarte til databasen:
>>> T.docid = 17
>>> T.save ()
>>> Clean.test_db.test_collection.find_one ()
{U'_id ': objectID ("..."), u'fail': False, u'docid ': 17}
definerende modeller
Ovenfor, ble samlingen attributtet tildelt vår Foo modell. Dette var en snarvei, skjønt; hvis database og samling er tildelt separat, kan modellen finne ut det fulle navnet på samlingen. Hvis samlingen og databasen er ikke til stede, forsøker micromongo å finne det ut basert på klasse og modul navnet på din modell. For eksempel vil blog.Post bli blog.post, eller stream.StreamEntry blir stream.stream_entry. Eksplisitt er bedre enn implisitt, og det oppfordres til at du setter samlingen manuelt.
Foruten pakking og utpakking resultater fra databasen, kan modellene også definere en spec dokument som kan definere standardinnstillinger og utføre validering før du lagrer modellen. Ta en triviell blogginnlegg modell:
>>> Fra micromongo.spec import *
>>> Klasse Post (Model):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; samling = 'test_db.blog_posts'
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; spec = dict (
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; author = Field (påkrevd = True, standard = 'jmoiron', type = basestring),
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; title = Field (påkrevd = False, standard = '', type = basestring),
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; publisert = Field (påkrevd = True, standard = False, type = [true, false]),
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; Kroppen = Field (type = 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

Et par ting skjer her. Felt som har en standard er initialisert til at standard om de er nødvendige eller ikke. Hvis et obligatorisk felt ikke har en standard, det er initialisert til Ingen.
Felt kan ta en type argument, som enten kan være en oppsigelige som tar en verdi og returnerer sant eller usant, ett eller flere basistyper, eller en eller flere verdier. Hvis en eller flere typer er gitt, er isinstance brukes til å teste at verdiene er riktig type. Hvis en eller flere verdier er gitt, the Field fungerer som en enum type, sjekke at verdiene er i sitt sett av verdier. Hvis ingen type er gitt, validering alltid passerer på et felt med mindre det er nødvendig, og mangler.
Hvis et felt i p er gitt en ugyldig type, så en ValueError heves:
>>> P.title = 10
>>> Inst ()
Traceback (siste samtale sist):
& Nbsp; ...
ValueError: Keys samsvarte ikke med spec: ['tittel']
>>> Del p.author
>>> Inst ()
Traceback (siste samtale sist):
& Nbsp; ...
ValueError: Manglende felt: ['forfatter'], Ugyldige felt: ['tittel']
>>> P.title = 'Min første innlegget'
>>> P.author = 'jmoiron'
>>> P.published = True
>>> P.body = u "Dette er mitt første blogginnlegg .. & nbsp; Jeg er så spent!"
>>> Inst ()
Model.find
For bekvemmelighet og TØRR, er Model.find en classmethod som skal bruke micromongo sin markøren til å utstede et funn mot høyre samlingen. Denne fremgangsmåten fungerer nøyaktig på samme måte som pymongo s Collection.find.
micromongo er litt modifisert Markør klasse gjør også en django-inspirerte order_by metoden tilgjengelig for alle pekere (finne og noe du lenker av hvis den returnerer en markør). Du kan sende en eller flere feltnavn, med en valgfri ledende '-', å sortere ting etter stigende eller synkende rekkefølge.
Disse endringene gjør at du kan bruke det meste av kraften i pymongo uten å måtte importere det, og lar deg unngå unødvendig repetisjon av plasseringen av dine data.
feltet subclassing
Du oppfordres til å lage dine egne felt som gjør det du ønsker. Feltklasser har en krok funksjon pre_validate som tar en inngangsverdi og kan forvandle det men de vil. Merk at dette kun gjelder hvis feltene faktisk er til stede; så å få noe sånt som en auto_now_add på en DateTimeField, vil du ønsker å gjøre det som kreves og har sin pre_validate snu Ingen inn datetime.datetime.now ()

Krav .

  • Python

Lignende programvare

db4o
db4o

12 May 15

Tellico
Tellico

7 Mar 16

datanommer
datanommer

20 Feb 15

Dobbin
Dobbin

14 Apr 15

Annen programvare fra utvikleren Jason Moiron

pdf2zip
pdf2zip

11 May 15

redtape
redtape

14 Apr 15

speedparser
speedparser

14 Apr 15

Kommentarer til micromongo

Kommentarer ikke funnet
Legg til kommentar
Slå på bilder!