micromongo

Software screenshot:
micromongo
Software detaljer:
Version: 0.1.4
Upload dato: 14 Apr 15
Udvikler: Jason Moiron
Licens: Gratis
Popularitet: 2

Rating: nan/5 (Total Votes: 0)

micromongo er en lille lag omkring pymongo der giver dig mulighed for at skabe enkle ORM-stil klasser, som kan udføre validering, tillader dot aktindsigt, auto-wrap queryset resultater, og give dig pre / post spare kroge.
Den er designet med microframeworks i tankerne, men er anvendelse og rammer agnostiker. Det er meningen, at forenkle brugen af ​​pymongo og give værktøjer til fælles idiomer, ikke at skjule pymongo eller MongoDB fra dine datastrukturer.
Du er velkommen til at åbne emner eller sende pull anmodninger om micromongo s GitHub
micromongo gør et par designbeslutninger i navnet på forenkling, der måske ikke virker for dig:
& Nbsp; - & nbsp; micromongo opretholder en enkelt global sammenhæng, så du kan ikke have modeller, der forbinder til flere MongoDB servere
& Nbsp; - & nbsp; Der er en håndfuld modelnavne og dokumentere attributnavne som ikke vil virke med micromongo modeller; disse vil blive dækket i den fulde docs
& Nbsp; - & nbsp; du kan kun have én model pr kollektion
at komme i gang
Til at starte med micromongo, bare importere den:
>>> Fra micromongo import tilslutte, Model
>>> C = forbinde ()
Connect tager de samme argumenter som pymongo s Connection objekt, og opfører sig næsten identisk, bortset fra, at det forsøger at automatisk tilbage forespørgsel resultater indpakket i de relevante modeller klasser. Forbindelsen objekt, som du opretter via denne indkaldelse vil blive cached og bruges af de forskellige ORM-stil faciliteter, ligesom Model.save (), Model.proxy, etc. Hvis du ønsker en ren, standard Connection objekt, du kan få en let :
>>> Fra micromongo import clean_connection
>>> Ren = clean_connection ()
Bemærk at clean_connection tager ikke argumenter og vil altid returnere en ren forbindelse klasse med de samme indstillinger som den aktuelle micromongo forbindelsen.
Med disse tilslutning objekter, kan du oprette databaser eller gøre, hvad du ville med normale pymongo objekter:
>>> Db = c.test_db
>>> Indsamling = db.test_collection
>>> Collection.save ({"DocId": 1, "fejle": False})
>>> Collection.find_one ()
{U'_id ': objekt-(' ... '), u'fail': Falsk, u'docid ': 1}
Du kan også erklære din egen model for en bestemt samling i deklarativ stil:
>>> Klasse TestModel (Model):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; samling = 'test_db.test_collection'
>>> Collection.find_one ()

Disse klasser har et antal yderligere funktioner over en ordbog, der kan gøre dem meget mere bekvemt at bruge. Dokumentet nøgler er alle tilgængelige som attributter:
>>> T = collection.find_one ()
>>> T.fail
False
>>> T.docid
1
Dokumenterne også let varet til databasen:
>>> T.docid = 17
>>> T.save ()
>>> Clean.test_db.test_collection.find_one ()
{U'_id ': objekt-(' ... '), u'fail': Falsk, u'docid ': 17}
definerer modeller
Ovenfor blev attribut kollektionen tildelt til vores Foo model. Dette var en genvej, men; hvis database og samling er tildelt hver for sig, kan modellen regne ud det fulde navn på samling. Hvis indsamling og databasen ikke er til stede, forsøger micromongo at regne det ud baseret på klasse og modul navnet på din model. For eksempel vil blog.Post blive blog.post eller stream.StreamEntry bliver stream.stream_entry. Eksplicit er bedre end implicit, og det er opmuntrende, at du indstiller samlingen manuelt.
Udover pakning og udpakning resultater fra databasen, kan modellerne også definere en spec dokument, som kan definere standardindstillinger og udfører validering, før du gemmer modellen. Tag en triviel blogindlæg model:
>>> Fra micromongo.spec import *
>>> Klasse Post (Model):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; indsamling = '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 = Felt (påkrævet = True, default = 'jmoiron «, type = basestring),
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; title = Felt (påkrævet = False, default = '', type = basestring),
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; offentliggjort = Felt (påkrævet = True, default = False, type = [true, false]),
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; krop = Field (type = Unicode),
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; tidsstempel = Field (),
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; )
>>> P = Post.new ()
>>> P

Et par ting der foregår her. Felter, der har en standard initialiseres til at misligholdelse, om de er nødvendige eller ej. Hvis et obligatorisk felt ikke har en standard, er det initialiseret til Ingen.
Felter kan tage en type argument, som enten kan være en konverterbar, der tager en værdi og returnerer Sandt eller falsk, en eller flere uædle typer, eller en eller flere værdier. Hvis en eller flere typer finder sted, isinstance anvendes til at teste, at værdier er den rigtige type. Hvis en eller flere værdier er forudsat, Field fungerer som en enum type kontrol af, at værdierne er i sin værdisæt. Hvis der gives ingen type, validering altid passerer på en mark, medmindre det er påkrævet, og fraværende.
Hvis et felt i p er givet en ugyldig type, så en ValueError hæves:
>>> P.title = 10
>>> P.save ()
Tilbagesporingstællingen (seneste opkald sidste):
& Nbsp; ...
ValueError: Nøgler svarede ikke spec: ['title']
>>> Del p.author
>>> P.save ()
Tilbagesporingstællingen (seneste opkald sidste):
& Nbsp; ...
ValueError: Manglende områder: ['forfatter'], Ugyldige felter: ['title']
>>> P.title = "Min første blogpost '
>>> P.author = 'jmoiron'
>>> P.published = True
>>> P.body = u "Dette er mit første blog-indlæg .. & nbsp; Jeg er så begejstret!"
>>> P.save ()
Model.find
For nemheds skyld og tør, Model.find er en classmethod, der skal bruge micromongo er markøren til at udstede et fund mod højre samling. Denne metode opfører præcis det samme som pymongo s Collection.find.
micromongo er ændret lidt Cursor klasse gør også en django-inspirerede order_by metode til rådighed for alle markører (find og noget du kæde fra, hvis den returnerer en markør). Du kan passere en eller flere feltnavne, med en valgfri førende '-', til at sortere tingene ved stigende eller faldende rækkefølge.
Disse ændringer gør det muligt at bruge de fleste af magt pymongo uden at skulle importere den, og lader dig undgå unødig gentagelse af placeringen af ​​dine data.
felt delklasse
Du opfordres til at oprette dine egne felter, der gør, hvad du ønsker. Felt underklasser har en krog funktion pre_validate der tager et indgående værdi og kan forvandle det, men de vil. Bemærk, at dette kun vil fungere, hvis markerne faktisk er til stede; så for at få noget som en auto_now_add på en DateTimeField, vil du ønsker at gøre det kræves, og har sin pre_validate vende Ingen i datetime.datetime.now ()

Krav :.

  • Python

Lignende software

Groovy
Groovy

28 Sep 15

migranto
migranto

20 Feb 15

doppler
doppler

20 Feb 15

Andre software developer Jason Moiron

redtape
redtape

14 Apr 15

speedparser
speedparser

14 Apr 15

pdf2zip
pdf2zip

11 May 15

Kommentarer til micromongo

Kommentarer ikke fundet
Tilføj kommentar
Tænd billeder!